Documentation ¶
Index ¶
- Variables
- func TestPutAndRemoveBatch(t *testing.T, chainID0, chainID1 ids.ID, _, sm1 SharedMemory, ...)
- func TestSharedMemoryCantDuplicatePut(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, _ database.Database)
- func TestSharedMemoryCantDuplicateRemove(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, _ database.Database)
- func TestSharedMemoryCommitOnPut(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, db database.Database)
- func TestSharedMemoryCommitOnRemove(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, db database.Database)
- func TestSharedMemoryIndexed(t *testing.T, chainID0, chainID1 ids.ID, sm0, sm1 SharedMemory, ...)
- func TestSharedMemoryLargeBatchSize(t *testing.T, _, chainID1 ids.ID, sm0, _ SharedMemory, db database.Database)
- func TestSharedMemoryLargeIndexed(t *testing.T, chainID0, chainID1 ids.ID, sm0, sm1 SharedMemory, ...)
- func TestSharedMemoryLargePutGetAndRemove(t *testing.T, chainID0, chainID1 ids.ID, sm0, sm1 SharedMemory, ...)
- func TestSharedMemoryPutAndGet(t *testing.T, chainID0, chainID1 ids.ID, sm0, sm1 SharedMemory, ...)
- func WriteAll(baseBatch database.Batch, batches ...database.Batch) error
- type Element
- type Memory
- type Requests
- type SharedMemory
Constants ¶
This section is empty.
Variables ¶
TestSharedMemoryPutAndGet, TestSharedMemoryLargePutGetAndRemove, TestSharedMemoryIndexed, TestSharedMemoryLargeIndexed, TestSharedMemoryCantDuplicatePut, TestSharedMemoryCantDuplicateRemove, TestSharedMemoryCommitOnPut, TestSharedMemoryCommitOnRemove, TestSharedMemoryLargeBatchSize, TestPutAndRemoveBatch, }
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 TestSharedMemoryCantDuplicateRemove ¶ added in v1.4.0
func TestSharedMemoryCommitOnPut ¶ added in v1.4.0
func TestSharedMemoryCommitOnRemove ¶ added in v1.4.0
func TestSharedMemoryIndexed ¶ added in v1.4.0
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 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
Types ¶
type Memory ¶ added in v0.8.0
type Memory struct {
// contains filtered or unexported fields
}
Memory is used to set up a bidirectional communication channel between a pair of chains.
For any such pair, we compute a hash of the ordered pair of IDs to use as a prefix DB that can be shared across the two chains. On top of the prefix DB shared among two chains, we use constant prefixes to determine the inbound/outbound and value/index database assignments.
func (*Memory) GetSharedDatabase ¶ added in v1.4.12
GetSharedDatabase returns a new locked prefix db on top of an existing database
Invariant: ReleaseSharedDatabase must be called after to free the database
associated with [sharedID]
func (*Memory) NewSharedMemory ¶ added in v0.8.0
func (m *Memory) NewSharedMemory(chainID ids.ID) SharedMemory
func (*Memory) ReleaseSharedDatabase ¶ added in v1.4.12
ReleaseSharedDatabase unlocks the provided DB
Note: ReleaseSharedDatabase must be called only after a corresponding call to
GetSharedDatabase. If ReleaseSharedDatabase is called without a corresponding one-to-one call with GetSharedDatabase, it will panic.
type SharedMemory ¶
type SharedMemory interface { // [peerChainID] Get(peerChainID ids.ID, keys [][]byte) (values [][]byte, err error) // given traits and were sent from [peerChainID]. Indexed( peerChainID ids.ID, traits [][]byte, startTrait, startKey []byte, limit int, ) ( values [][]byte, lastTrait, lastKey []byte, err error, ) // [requests] to their respective chainID keys in the map along with the // batches on the underlying DB. // // Invariant: The underlying database of [batches] must be the same as the // underlying database for SharedMemory. Apply(requests map[ids.ID]*Requests, batches ...database.Batch) error }