Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Batch ¶
type Batch interface { SetDeleter Write() WriteSync() Close() }
Batch Close must be called when the program no longer needs the object.
type DB ¶
type DB interface { // Get returns nil iff key doesn't exist. // A nil key is interpreted as an empty byteslice. // CONTRACT: key, value readonly []byte Get([]byte) []byte // Has checks if a key exists. // A nil key is interpreted as an empty byteslice. // CONTRACT: key, value readonly []byte Has(key []byte) bool // Set sets the key. // A nil key is interpreted as an empty byteslice. // CONTRACT: key, value readonly []byte Set([]byte, []byte) SetSync([]byte, []byte) // Delete deletes the key. // A nil key is interpreted as an empty byteslice. // CONTRACT: key readonly []byte Delete([]byte) DeleteSync([]byte) // Iterate over a domain of keys in ascending order. End is exclusive. // Start must be less than end, or the Iterator is invalid. // A nil start is interpreted as an empty byteslice. // If end is nil, iterates up to the last item (inclusive). // CONTRACT: No writes may happen within a domain while an iterator exists over it. // CONTRACT: start, end readonly []byte Iterator(start, end []byte) Iterator // Iterate over a domain of keys in descending order. End is exclusive. // Start must be less than end, or the Iterator is invalid. // If start is nil, iterates up to the first/least item (inclusive). // If end is nil, iterates from the last/greatest item (inclusive). // CONTRACT: No writes may happen within a domain while an iterator exists over it. // CONTRACT: start, end readonly []byte ReverseIterator(start, end []byte) Iterator // Closes the connection. Close() // Creates a batch for atomic updates. NewBatch() Batch // For debugging Print() // Stats returns a map of property values for all keys and the size of the cache. Stats() map[string]string }
DBs are goroutine safe.
type DataTree ¶
type DataTree interface { DeactiviateEntry(sn int64) int AppendEntry(entry *Entry) int64 AppendEntryRawBytes(entryBz []byte, sn int64) int64 ReadEntry(pos int64) *Entry GetActiveBit(sn int64) bool EvictTwig(twigID int64) GetActiveEntriesInTwig(twigID int64) chan []byte ScanEntries(oldestActiveTwigID int64, outChan chan EntryX) ScanEntriesLite(oldestActiveTwigID int64, outChan chan KeyAndPos) TwigCanBePruned(twigID int64) bool PruneTwigs(startID, endID int64) []byte GetFileSizes() (int64, int64) EndBlock() [32]byte WaitForFlushing() DeactivedSNListSize() int PrintTree() Flush() Close() }
type EntryHandler ¶
type HotEntry ¶
type HotEntry struct { EntryPtr *Entry Operation OperationOnEntry IsModified bool IsTouchedByNext bool }
type IndexTree ¶
type IndexTree interface { Init(repFn func([]byte)) error ActiveCount() int BeginWrite(height int64) EndWrite() Iterator(start, end []byte) IteratorUI64 ReverseIterator(start, end []byte) IteratorUI64 Get(k []byte) (int64, bool) GetAtHeight(k []byte, height uint64) (int64, bool) Set(k []byte, v int64) Delete(k []byte) Close() }
type Iterator ¶
type Iterator interface { // The start & end (exclusive) limits to iterate over. // If end < start, then the Iterator goes in reverse order. // // A domain of ([]byte{12, 13}, []byte{12, 14}) will iterate // over anything with the prefix []byte{12, 13}. // // The smallest key is the empty byte array []byte{} - see BeginningKey(). // The largest key is the nil byte array []byte(nil) - see EndingKey(). // CONTRACT: start, end readonly []byte Domain() (start []byte, end []byte) // Valid returns whether the current position is valid. // Once invalid, an Iterator is forever invalid. Valid() bool // Next moves the iterator to the next sequential key in the database, as // defined by order of iteration. // // If Valid returns false, this method will panic. Next() // Key returns the key of the cursor. // If Valid returns false, this method will panic. // CONTRACT: key readonly []byte Key() (key []byte) // Value returns the value of the cursor. // If Valid returns false, this method will panic. // CONTRACT: value readonly []byte Value() (value []byte) // Close releases the Iterator. Close() }
Usage:
var itr Iterator = ... defer itr.Close()
for ; itr.Valid(); itr.Next() { k, v := itr.Key(); itr.Value() // ... }
type IteratorUI64 ¶
type MetaDB ¶
type MetaDB interface { Commit() ReloadFromKVDB() PrintInfo() SetCurrHeight(h int64) GetCurrHeight() int64 SetTwigMtFileSize(size int64) GetTwigMtFileSize() int64 SetEntryFileSize(size int64) GetEntryFileSize() int64 GetTwigHeight(twigID int64) int64 DeleteTwigHeight(twigID int64) SetLastPrunedTwig(twigID int64) GetLastPrunedTwig() int64 GetEdgeNodes() []byte SetEdgeNodes(bz []byte) // MaxSerialNum is the maximum serial num among all the entries GetMaxSerialNum() int64 IncrMaxSerialNum() // It should call setTwigHeight(twigID int64, height int64) GetRootHash() [32]byte SetRootHash(h [32]byte) // the ID of the oldest active twig, increased by ReapOldestActiveTwig GetOldestActiveTwigID() int64 IncrOldestActiveTwigID() GetIsRunning() bool SetIsRunning(isRunning bool) Init() Close() }
type OperationOnEntry ¶
type OperationOnEntry int32
const ( OpNone OperationOnEntry = iota OpDelete OpInsertOrChange )
type SetDeleter ¶
Click to show internal directories.
Click to hide internal directories.