data

package
v0.0.0-...-c988f1e Latest Latest
Warning

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

Go to latest
Published: Nov 16, 2020 License: Apache-2.0 Imports: 3 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Copy

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

Copy is a copy of a tree which can be used to apply changes to the radix tree. All changes are applied atomically and a new tree is returned when committed. A Copy is not thread safe.

func (*Copy) All

func (c *Copy) All(key []byte) *List

All is used to retrieve a specific key, returning all list values.

func (*Copy) Cursor

func (c *Copy) Cursor() *Cursor

Cursor returns a new cursor for iterating through the radix tree.

func (*Copy) Cut

func (c *Copy) Cut(key []byte) *Item

Cut is used to delete a given key, returning the previous value.

func (*Copy) Del

func (c *Copy) Del(ver uint64, key []byte) *Item

Del is used to delete a given key, returning the previous value.

func (*Copy) Get

func (c *Copy) Get(ver uint64, key []byte) *Item

Get is used to retrieve a specific key, returning the current value.

func (*Copy) Put

func (c *Copy) Put(ver uint64, key, val []byte) *Item

Put is used to insert a specific key, returning the previous value.

func (*Copy) Root

func (c *Copy) Root() *Node

Root returns the root of the radix tree within this tree copy.

func (*Copy) Size

func (c *Copy) Size() int

Size is used to return the total number of elements in the tree.

func (*Copy) Tree

func (c *Copy) Tree() *Tree

Tree returns a new tree with the changes committed in memory.

type Cursor

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

Cursor represents an iterator that can traverse over all key-value pairs in a tree in sorted order. Cursors can be obtained from a transaction and are valid as long as the transaction is open. Changing data while traversing with a cursor may cause it to be invalidated and return unexpected keys and/or values. You must reposition your cursor after mutating data.

func (*Cursor) Del

func (c *Cursor) Del() ([]byte, *List)

Del removes the current item under the cursor from the tree. If the cursor has not yet been positioned using First, Last, or Seek, then no item is deleted and a nil key and value are returned.

func (*Cursor) First

func (c *Cursor) First() ([]byte, *List)

First moves the cursor to the first item in the tree and returns its key and value. If the tree is empty then a nil key and value are returned.

func (*Cursor) Here

func (c *Cursor) Here() *List

Here moves the cursor to the first item in the tree and returns its key and value. If the tree is empty then a nil key and value are returned.

func (*Cursor) Last

func (c *Cursor) Last() ([]byte, *List)

Last moves the cursor to the last item in the tree and returns its key and value. If the tree is empty then a nil key and value are returned.

func (*Cursor) Next

func (c *Cursor) Next() ([]byte, *List)

Next moves the cursor to the next item in the tree and returns its key and value. If the tree is empty then a nil key and value are returned, and if the cursor is at the end of the tree then a nil key and value are returned. If the cursor has not yet been positioned using First, Last, or Seek, then a nil key and value are returned.

func (*Cursor) Prev

func (c *Cursor) Prev() ([]byte, *List)

Prev moves the cursor to the previous item in the tree and returns its key and value. If the tree is empty then a nil key and value are returned, and if the cursor is at the start of the tree then a nil key and value are returned. If the cursor has not yet been positioned using First, Last, or Seek, then a nil key and value are returned.

func (*Cursor) Seek

func (c *Cursor) Seek(key []byte) ([]byte, *List)

Seek moves the cursor to a given key in the tree and returns it. If the specified key does not exist then the next key in the tree is used. If no keys follow, then a nil key and value are returned.

type Find

type Find int8

Find determines which method is used to seek items in the list.

const (
	// Exact returns an item at a specific version from the list. If the exact
	// item does not exist in the list, then a nil value is returned.
	Exact Find = iota
	// Prev returns the nearest item in the list, where the version number is
	// less than the given version. In a time-series list, this can be used
	// to get the version that was valid before a specified time.
	Prev
	// Next returns the nearest item in the list, where the version number is
	// greater than the given version. In a time-series list, this can be used
	// to get the version that was changed after a specified time.
	Next
	// Upto returns the nearest item in the list, where the version number is
	// less than or equal to the given version. In a time-series list, this can
	// be used to get the version that was current at the specified time.
	Upto
	// Nearest returns an item nearest a specific version in the list. If there
	// is a previous version to the given version, then it will be returned,
	// otherwise it will return the next available version.
	Nearest
)

type Item

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

Item represents an item in a time-series list.

func (*Item) Del

func (i *Item) Del() *Item

Del deletes the item from any containing list and returns it.

func (*Item) Next

func (i *Item) Next() *Item

Next returns the next item to this item in the list.

func (*Item) Prev

func (i *Item) Prev() *Item

Prev returns the previous item to this item in the list.

func (*Item) Set

func (i *Item) Set(val []byte) *Item

Set updates the value of this item in the containing list.

func (*Item) Val

func (i *Item) Val() []byte

Val returns the value of this item in the containing list.

func (*Item) Ver

func (i *Item) Ver() uint64

Ver returns the version of this item in the containing list.

type List

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

List represents a doubly-linked time-series list.

func (*List) Clr

func (l *List) Clr()

Clr clears all of the items from the list.

func (*List) Del

func (l *List) Del(ver uint64, meth Find) *Item

Del deletes a specific item from the list, returning the previous item if it existed. If it did not exist, a nil value is returned.

func (*List) Exp

func (l *List) Exp(ver uint64, meth Find) *Item

Exp expunges all items in the list, upto and including the specified version, returning the latest version, or a nil value if not found.

func (*List) Get

func (l *List) Get(ver uint64, meth Find) *Item

Get gets a specific item from the list. If the exact item does not exist in the list, then a nil value is returned.

func (*List) Len

func (l *List) Len() int

Len returns the total number of items in the list.

func (*List) Max

func (l *List) Max() *Item

Max returns the last item in the list. In a time-series list this can be used to get the latest version.

func (*List) Min

func (l *List) Min() *Item

Min returns the first item in the list. In a time-series list this can be used to get the initial version.

func (*List) Put

func (l *List) Put(ver uint64, val []byte) *Item

Put inserts a new item into the list, ensuring that the list is sorted after insertion. If an item with the same version already exists in the list, then the value is updated.

func (*List) Rng

func (l *List) Rng(beg, end uint64, fn func(*Item) bool)

Rng iterates over the list starting at the first version, and continuing until the walk function returns true.

func (*List) Walk

func (l *List) Walk(fn func(*Item) bool)

Walk iterates over the list starting at the first version, and continuing until the walk function returns true.

type Node

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

Node represents an immutable node in the radix tree which can be either an edge node or a leaf node.

func (*Node) Max

func (n *Node) Max() ([]byte, *List)

Max returns the key and value of the maximum item in the subtree of the current node.

func (*Node) Min

func (n *Node) Min() ([]byte, *List)

Min returns the key and value of the minimum item in the subtree of the current node.

func (*Node) Path

func (n *Node) Path(k []byte, f Walker)

Path is used to recurse over the tree only visiting nodes which are above this node in the tree.

func (*Node) Subs

func (n *Node) Subs(k []byte, f Walker)

Subs is used to recurse over the tree only visiting nodes which are directly under this node in the tree.

func (*Node) Walk

func (n *Node) Walk(k []byte, f Walker)

Walk is used to recurse over the tree only visiting nodes which are under this node in the tree.

type Tree

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

Tree represents an immutable versioned radix tree.

func New

func New() *Tree

New returns an empty Tree

func (*Tree) Copy

func (t *Tree) Copy() *Copy

Copy starts a new transaction that can be used to mutate the tree

func (*Tree) Size

func (t *Tree) Size() int

Size is used to return the number of elements in the tree.

type Walker

type Walker func(key []byte, val *List) (exit bool)

Walker represents a callback function which is to be used when iterating through the tree using Path, Subs, or Walk. It will be populated with the key and list of the current item, and returns a bool signifying if the iteration should be terminated.

Jump to

Keyboard shortcuts

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