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() []byte
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) (uint64, bool)
GetAtHeight(k []byte, height uint64) (uint64, bool)
Set(k []byte, v uint64)
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)
// 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.