vault: github.com/hashicorp/vault/vendor/github.com/hashicorp/go-immutable-radix Index | Files

package iradix

import "github.com/hashicorp/vault/vendor/github.com/hashicorp/go-immutable-radix"

Index

Package Files

edges.go iradix.go iter.go node.go raw_iter.go

type Iterator Uses

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

Iterator is used to iterate over a set of nodes in pre-order

func (*Iterator) Next Uses

func (i *Iterator) Next() ([]byte, interface{}, bool)

Next returns the next node in order

func (*Iterator) SeekPrefix Uses

func (i *Iterator) SeekPrefix(prefix []byte)

SeekPrefix is used to seek the iterator to a given prefix

func (*Iterator) SeekPrefixWatch Uses

func (i *Iterator) SeekPrefixWatch(prefix []byte) (watch <-chan struct{})

SeekPrefixWatch is used to seek the iterator to a given prefix and returns the watch channel of the finest granularity

type Node Uses

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

Node is an immutable node in the radix tree

func (*Node) Get Uses

func (n *Node) Get(k []byte) (interface{}, bool)

func (*Node) GetWatch Uses

func (n *Node) GetWatch(k []byte) (<-chan struct{}, interface{}, bool)

func (*Node) Iterator Uses

func (n *Node) Iterator() *Iterator

Iterator is used to return an iterator at the given node to walk the tree

func (*Node) LongestPrefix Uses

func (n *Node) LongestPrefix(k []byte) ([]byte, interface{}, bool)

LongestPrefix is like Get, but instead of an exact match, it will return the longest prefix match.

func (*Node) Maximum Uses

func (n *Node) Maximum() ([]byte, interface{}, bool)

Maximum is used to return the maximum value in the tree

func (*Node) Minimum Uses

func (n *Node) Minimum() ([]byte, interface{}, bool)

Minimum is used to return the minimum value in the tree

func (*Node) Walk Uses

func (n *Node) Walk(fn WalkFn)

Walk is used to walk the tree

func (*Node) WalkPath Uses

func (n *Node) WalkPath(path []byte, fn WalkFn)

WalkPath is used to walk the tree, but only visiting nodes from the root down to a given leaf. Where WalkPrefix walks all the entries *under* the given prefix, this walks the entries *above* the given prefix.

func (*Node) WalkPrefix Uses

func (n *Node) WalkPrefix(prefix []byte, fn WalkFn)

WalkPrefix is used to walk the tree under a prefix

type Tree Uses

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

Tree implements an immutable radix tree. This can be treated as a Dictionary abstract data type. The main advantage over a standard hash map is prefix-based lookups and ordered iteration. The immutability means that it is safe to concurrently read from a Tree without any coordination.

func New Uses

func New() *Tree

New returns an empty Tree

func (*Tree) Delete Uses

func (t *Tree) Delete(k []byte) (*Tree, interface{}, bool)

Delete is used to delete a given key. Returns the new tree, old value if any, and a bool indicating if the key was set.

func (*Tree) DeletePrefix Uses

func (t *Tree) DeletePrefix(k []byte) (*Tree, bool)

DeletePrefix is used to delete all nodes starting with a given prefix. Returns the new tree, and a bool indicating if the prefix matched any nodes

func (*Tree) Get Uses

func (t *Tree) Get(k []byte) (interface{}, bool)

Get is used to lookup a specific key, returning the value and if it was found

func (*Tree) Insert Uses

func (t *Tree) Insert(k []byte, v interface{}) (*Tree, interface{}, bool)

Insert is used to add or update a given key. The return provides the new tree, previous value and a bool indicating if any was set.

func (*Tree) Len Uses

func (t *Tree) Len() int

Len is used to return the number of elements in the tree

func (*Tree) Root Uses

func (t *Tree) Root() *Node

Root returns the root node of the tree which can be used for richer query operations.

func (*Tree) Txn Uses

func (t *Tree) Txn() *Txn

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

type Txn Uses

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

Txn is a transaction on the tree. This transaction is applied atomically and returns a new tree when committed. A transaction is not thread safe, and should only be used by a single goroutine.

func (*Txn) Commit Uses

func (t *Txn) Commit() *Tree

Commit is used to finalize the transaction and return a new tree. If mutation tracking is turned on then notifications will also be issued.

func (*Txn) CommitOnly Uses

func (t *Txn) CommitOnly() *Tree

CommitOnly is used to finalize the transaction and return a new tree, but does not issue any notifications until Notify is called.

func (*Txn) Delete Uses

func (t *Txn) Delete(k []byte) (interface{}, bool)

Delete is used to delete a given key. Returns the old value if any, and a bool indicating if the key was set.

func (*Txn) DeletePrefix Uses

func (t *Txn) DeletePrefix(prefix []byte) bool

DeletePrefix is used to delete an entire subtree that matches the prefix This will delete all nodes under that prefix

func (*Txn) Get Uses

func (t *Txn) Get(k []byte) (interface{}, bool)

Get is used to lookup a specific key, returning the value and if it was found

func (*Txn) GetWatch Uses

func (t *Txn) GetWatch(k []byte) (<-chan struct{}, interface{}, bool)

GetWatch is used to lookup a specific key, returning the watch channel, value and if it was found

func (*Txn) Insert Uses

func (t *Txn) Insert(k []byte, v interface{}) (interface{}, bool)

Insert is used to add or update a given key. The return provides the previous value and a bool indicating if any was set.

func (*Txn) Notify Uses

func (t *Txn) Notify()

Notify is used along with TrackMutate to trigger notifications. This must only be done once a transaction is committed via CommitOnly, and it is called automatically by Commit.

func (*Txn) Root Uses

func (t *Txn) Root() *Node

Root returns the current root of the radix tree within this transaction. The root is not safe across insert and delete operations, but can be used to read the current state during a transaction.

func (*Txn) TrackMutate Uses

func (t *Txn) TrackMutate(track bool)

TrackMutate can be used to toggle if mutations are tracked. If this is enabled then notifications will be issued for affected internal nodes and leaves when the transaction is committed.

type WalkFn Uses

type WalkFn func(k []byte, v interface{}) bool

WalkFn is used when walking the tree. Takes a key and value, returning if iteration should be terminated.

Package iradix imports 4 packages (graph). Updated 2019-05-04. Refresh now. Tools for package owners.