adt

package
v2.3.12 Latest Latest
Warning

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

Go to latest
Published: Apr 22, 2021 License: Apache-2.0, MIT Imports: 16 Imported by: 2

Documentation

Index

Constants

This section is empty.

Variables

View Source
var HamtOptions = []hamt.Option{
	hamt.UseTreeBitWidth(hamtBitwidth),
	hamt.UseHashFunction(func(input []byte) []byte {
		res := sha256.Sum256(input)
		return res[:]
	}),
}

HamtOptions specifies all the options used to construct filecoin HAMTs.

Functions

This section is empty.

Types

type Array

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

Array stores a sparse sequence of values in an AMT.

func AsArray

func AsArray(s Store, r cid.Cid) (*Array, error)

AsArray interprets a store as an AMT-based array with root `r`.

func MakeEmptyArray

func MakeEmptyArray(s Store) *Array

Creates a new map backed by an empty HAMT and flushes it to the store.

func (*Array) AppendContinuous

func (a *Array) AppendContinuous(value cbor.Marshaler) error

Appends a value to the end of the array. Assumes continuous array. If the array isn't continuous use Set and a separate counter

func (*Array) BatchDelete

func (a *Array) BatchDelete(ix []uint64) error

func (*Array) Delete

func (a *Array) Delete(i uint64) error

func (*Array) ForEach

func (a *Array) ForEach(out cbor.Unmarshaler, fn func(i int64) error) error

Iterates all entries in the array, deserializing each value in turn into `out` and then calling a function. Iteration halts if the function returns an error. If the output parameter is nil, deserialization is skipped.

func (*Array) Get

func (a *Array) Get(k uint64, out cbor.Unmarshaler) (bool, error)

Get retrieves array element into the 'out' unmarshaler, returning a boolean

indicating whether the element was found in the array

func (*Array) Length

func (a *Array) Length() uint64

func (*Array) Root

func (a *Array) Root() (cid.Cid, error)

Returns the root CID of the underlying AMT.

func (*Array) Set

func (a *Array) Set(i uint64, value cbor.Marshaler) error

type BalanceTable

type BalanceTable Map

A specialization of a map of addresses to (positive) token amounts. Absent keys implicitly have a balance of zero.

func AsBalanceTable

func AsBalanceTable(s Store, r cid.Cid) (*BalanceTable, error)

Interprets a store as balance table with root `r`.

func (*BalanceTable) Add

func (t *BalanceTable) Add(key addr.Address, value abi.TokenAmount) error

Adds an amount to a balance, requiring the resulting balance to be non-negative.

func (*BalanceTable) Get

func (t *BalanceTable) Get(key addr.Address) (abi.TokenAmount, error)

Gets the balance for a key, which is zero if they key has never been added to.

func (*BalanceTable) MustSubtract

func (t *BalanceTable) MustSubtract(key addr.Address, req abi.TokenAmount) error

MustSubtract subtracts the given amount from the account's balance. Returns an error if the account has insufficient balance

func (*BalanceTable) Root

func (t *BalanceTable) Root() (cid.Cid, error)

Returns the root cid of underlying HAMT.

func (*BalanceTable) SubtractWithMinimum

func (t *BalanceTable) SubtractWithMinimum(key addr.Address, req abi.TokenAmount, floor abi.TokenAmount) (abi.TokenAmount, error)

Subtracts up to the specified amount from a balance, without reducing the balance below some minimum. Returns the amount subtracted.

func (*BalanceTable) Total

func (t *BalanceTable) Total() (abi.TokenAmount, error)

Returns the total balance held by this BalanceTable

type Map

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

Map stores key-value pairs in a HAMT.

func AsMap

func AsMap(s Store, r cid.Cid) (*Map, error)

AsMap interprets a store as a HAMT-based map with root `r`.

func MakeEmptyMap

func MakeEmptyMap(s Store) *Map

Creates a new map backed by an empty HAMT and flushes it to the store.

func (*Map) CollectKeys

func (m *Map) CollectKeys() (out []string, err error)

Collects all the keys from the map into a slice of strings.

func (*Map) Delete

func (m *Map) Delete(k abi.Keyer) error

Delete removes the value at `k` from the hamt store.

func (*Map) ForEach

func (m *Map) ForEach(out cbor.Unmarshaler, fn func(key string) error) error

Iterates all entries in the map, deserializing each value in turn into `out` and then calling a function with the corresponding key. Iteration halts if the function returns an error. If the output parameter is nil, deserialization is skipped.

func (*Map) Get

func (m *Map) Get(k abi.Keyer, out cbor.Unmarshaler) (bool, error)

Get puts the value at `k` into `out`.

func (*Map) Has

func (m *Map) Has(k abi.Keyer) (bool, error)

Has checks for the existance of a key without deserializing its value.

func (*Map) Put

func (m *Map) Put(k abi.Keyer, v cbor.Marshaler) error

Put adds value `v` with key `k` to the hamt store.

func (*Map) Root

func (m *Map) Root() (cid.Cid, error)

Returns the root cid of underlying HAMT.

type Multimap

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

Multimap stores multiple values per key in a HAMT of AMTs. The order of insertion of values for each key is retained.

func AsMultimap

func AsMultimap(s Store, r cid.Cid) (*Multimap, error)

Interprets a store as a HAMT-based map of AMTs with root `r`.

func MakeEmptyMultimap

func MakeEmptyMultimap(s Store) *Multimap

Creates a new map backed by an empty HAMT and flushes it to the store.

func (*Multimap) Add

func (mm *Multimap) Add(key abi.Keyer, value cbor.Marshaler) error

Adds a value for a key.

func (*Multimap) ForAll

func (mm *Multimap) ForAll(fn func(k string, arr *Array) error) error

func (*Multimap) ForEach

func (mm *Multimap) ForEach(key abi.Keyer, out cbor.Unmarshaler, fn func(i int64) error) error

Iterates all entries for a key in the order they were inserted, deserializing each value in turn into `out` and then calling a function. Iteration halts if the function returns an error. If the output parameter is nil, deserialization is skipped.

func (*Multimap) Get

func (mm *Multimap) Get(key abi.Keyer) (*Array, bool, error)

func (*Multimap) RemoveAll

func (mm *Multimap) RemoveAll(key abi.Keyer) error

Removes all values for a key.

func (*Multimap) Root

func (mm *Multimap) Root() (cid.Cid, error)

Returns the root cid of the underlying HAMT.

type Set

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

Set interprets a Map as a set, storing keys (with empty values) in a HAMT.

func AsSet

func AsSet(s Store, r cid.Cid) (*Set, error)

AsSet interprets a store as a HAMT-based set with root `r`.

func MakeEmptySet

func MakeEmptySet(s Store) *Set

NewSet creates a new HAMT with root `r` and store `s`.

func (*Set) CollectKeys

func (h *Set) CollectKeys() (out []string, err error)

Collects all the keys from the set into a slice of strings.

func (*Set) Delete

func (h *Set) Delete(k abi.Keyer) error

Delete removes `k` from the set.

func (*Set) ForEach

func (h *Set) ForEach(cb func(k string) error) error

ForEach iterates over all values in the set, calling the callback for each value. Returning error from the callback stops the iteration.

func (*Set) Has

func (h *Set) Has(k abi.Keyer) (bool, error)

Has returns true iff `k` is in the set.

func (*Set) Put

func (h *Set) Put(k abi.Keyer) error

Put adds `k` to the set.

func (*Set) Root

func (h *Set) Root() (cid.Cid, error)

Root return the root cid of HAMT.

type Store

type Store interface {
	Context() context.Context
	ipldcbor.IpldStore
}

Store defines an interface required to back the ADTs in this package.

func AsStore

func AsStore(rt vmr.Runtime) Store

Adapts a Runtime as an ADT store.

func WrapStore

func WrapStore(ctx context.Context, store ipldcbor.IpldStore) Store

Adapts a vanilla IPLD store as an ADT store.

Jump to

Keyboard shortcuts

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