hamt

package
v1.4.1 Latest Latest
Warning

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

Go to latest
Published: Feb 28, 2026 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type DiffEntry

type DiffEntry struct {
	Key      string
	OldValue string
	NewValue string
}

DiffEntry represents a single change between two trees. OldValue is empty for additions; NewValue is empty for deletions.

type TransactionalStore

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

TransactionalStore buffers HAMT node writes in memory and flushes only the reachable subset to the persistent store.

func NewTransactionalStore

func NewTransactionalStore(persistent store.ObjectStore) *TransactionalStore

func (*TransactionalStore) Delete

func (ts *TransactionalStore) Delete(ctx context.Context, key string) error

func (*TransactionalStore) Exists

func (ts *TransactionalStore) Exists(ctx context.Context, key string) (bool, error)

func (*TransactionalStore) ExportCaches

func (ts *TransactionalStore) ExportCaches() map[string][]byte

ExportCaches returns a merged view of all node data currently held in memory (both the staging buffer and the read cache). The caller can persist this to avoid fetching the same nodes on the next run.

func (*TransactionalStore) Flush

func (ts *TransactionalStore) Flush(rootRef string) error

Flush writes only the HAMT nodes reachable from rootRef to the persistent store, ignoring intermediate nodes that were superseded during the transaction. Returns the number of nodes written.

func (*TransactionalStore) Get

func (ts *TransactionalStore) Get(ctx context.Context, key string) ([]byte, error)

func (*TransactionalStore) List

func (ts *TransactionalStore) List(ctx context.Context, prefix string) ([]string, error)

func (*TransactionalStore) PreloadReadCache

func (ts *TransactionalStore) PreloadReadCache(data map[string][]byte)

PreloadReadCache populates the read-through cache from externally loaded data. Nodes already present in the staging buffer or read cache are not overwritten.

func (*TransactionalStore) Put

func (ts *TransactionalStore) Put(ctx context.Context, key string, data []byte) error

func (*TransactionalStore) Size

func (ts *TransactionalStore) Size(ctx context.Context, key string) (int64, error)

func (*TransactionalStore) TotalSize

func (ts *TransactionalStore) TotalSize(ctx context.Context) (int64, error)

type Tree

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

Tree is a persistent Hash Array Mapped Trie backed by a content-addressed store. Keys and values are opaque strings; values are typically object refs ("filemeta/<hash>").

func NewTree

func NewTree(s store.ObjectStore) *Tree

NewTree creates a Tree backed by the given object store.

func (*Tree) Delete

func (t *Tree) Delete(root, key string) (string, error)

Delete removes the entry for key, returning a new root ref. If the key is not found the original root is returned unchanged. Deleting from an empty tree is a no-op.

func (*Tree) Diff

func (t *Tree) Diff(root1, root2 string, fn func(DiffEntry) error) error

Diff structurally compares two trees and calls fn for every entry that was added, removed, or modified between root1 and root2.

func (*Tree) Insert

func (t *Tree) Insert(root, key, value string) (string, error)

Insert adds or updates the entry for key, returning a new root ref. Pass an empty root to start a new tree.

func (*Tree) Lookup

func (t *Tree) Lookup(root, key string) (string, error)

Lookup returns the value associated with key, or ("", nil) if not found.

func (*Tree) NodeRefs

func (t *Tree) NodeRefs(root string, fn func(ref string) error) error

NodeRefs visits every HAMT node ref reachable from root (including root itself). This is useful for garbage-collection marking.

func (*Tree) Walk

func (t *Tree) Walk(root string, fn func(key, value string) error) error

Walk visits every (key, value) pair stored in the tree rooted at root.

Jump to

Keyboard shortcuts

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