atomic

package
v1.5.3-rc.2 Latest Latest
Warning

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

Go to latest
Published: Aug 26, 2021 License: BSD-3-Clause Imports: 17 Imported by: 60

Documentation

Index

Constants

This section is empty.

Variables

SharedMemoryTests is a list of all shared memory tests

Functions

func TestPutAndRemoveBatch added in v1.4.12

func TestPutAndRemoveBatch(t *testing.T, chainID0, chainID1 ids.ID, _, sm1 SharedMemory, db database.Database)

TestPutAndRemoveBatch tests to make sure multiple put and remove requests work properly

func TestSharedMemoryCantDuplicatePut added in v1.4.0

func TestSharedMemoryCantDuplicatePut(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, _ database.Database)

func TestSharedMemoryCantDuplicateRemove added in v1.4.0

func TestSharedMemoryCantDuplicateRemove(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, _ database.Database)

func TestSharedMemoryCommitOnPut added in v1.4.0

func TestSharedMemoryCommitOnPut(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, db database.Database)

func TestSharedMemoryCommitOnRemove added in v1.4.0

func TestSharedMemoryCommitOnRemove(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, db database.Database)

func TestSharedMemoryIndexed added in v1.4.0

func TestSharedMemoryIndexed(t *testing.T, chainID0, chainID1 ids.ID, sm0, sm1 SharedMemory, _ database.Database)

func TestSharedMemoryLargeBatchSize added in v1.4.0

func TestSharedMemoryLargeBatchSize(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, db database.Database)

TestSharedMemoryLargeBatchSize tests to make sure that the interface can support large batches.

func TestSharedMemoryLargeIndexed added in v1.4.0

func TestSharedMemoryLargeIndexed(t *testing.T, chainID0, chainID1 ids.ID, sm0, sm1 SharedMemory, _ database.Database)

func TestSharedMemoryLargePutGetAndRemove added in v1.4.0

func TestSharedMemoryLargePutGetAndRemove(t *testing.T, chainID0, chainID1 ids.ID, sm0, sm1 SharedMemory, _ database.Database)

TestSharedMemoryLargePutGetAndRemove tests to make sure that the interface can support large values.

func TestSharedMemoryPutAndGet added in v1.4.0

func TestSharedMemoryPutAndGet(t *testing.T, chainID0, chainID1 ids.ID, sm0, sm1 SharedMemory, _ database.Database)

func WriteAll

func WriteAll(baseBatch database.Batch, batches ...database.Batch) error

WriteAll assumes all batches have the same underlying database. Batches should not be modified after being passed to this function.

Types

type Element added in v0.8.0

type Element struct {
	Key    []byte
	Value  []byte
	Traits [][]byte
}

type Memory added in v0.8.0

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

Memory is the interface for shared memory inside a subnet

func (*Memory) GetSharedDatabase added in v1.4.12

func (m *Memory) GetSharedDatabase(db database.Database, sharedID ids.ID) database.Database

GetSharedDatabase returns a new locked prefix db on top of an existing database

func (*Memory) Initialize added in v0.8.0

func (m *Memory) Initialize(log logging.Logger, db database.Database) error

Initialize the SharedMemory

func (*Memory) NewSharedMemory added in v0.8.0

func (m *Memory) NewSharedMemory(chainID ids.ID) SharedMemory

NewSharedMemory returns a new SharedMemory

func (*Memory) ReleaseSharedDatabase added in v1.4.12

func (m *Memory) ReleaseSharedDatabase(sharedID ids.ID)

ReleaseSharedDatabase unlocks the provided DB

type Requests added in v1.4.12

type Requests struct {
	RemoveRequests [][]byte
	PutRequests    []*Element
	// contains filtered or unexported fields
}

type SharedMemory

type SharedMemory interface {
	// Fetches from this chain's side
	Get(peerChainID ids.ID, keys [][]byte) (values [][]byte, err error)
	Indexed(
		peerChainID ids.ID,
		traits [][]byte,
		startTrait,
		startKey []byte,
		limit int,
	) (
		values [][]byte,
		lastTrait,
		lastKey []byte,
		err error,
	)
	Apply(requests map[ids.ID]*Requests, batches ...database.Batch) error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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