index

package
v0.0.0-...-e9fa201 Latest Latest
Warning

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

Go to latest
Published: Mar 16, 2026 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IndexKind

type IndexKind int
const (
	IndexKindLevelDB IndexKind = iota
)

type Indexer

type Indexer[K comparable, V any] interface {
	io.Closer
	Put(key K, value V) error
	Get(key K) (V, error)
	Delete(key K) error
	Iterate(func(key K, value V) error) error
	Stream(filter func(value V) bool) <-chan V

	// Destroy removes the underlying idx file
	Destroy() error

	// Sync forces buffered writes to disk
	Sync() error

	// PutSync writes with immediate fsync (slower but durable)
	// Use for critical operations like RefCount updates
	PutSync(key K, value V) error

	// DeleteSync deletes with immediate fsync (slower but durable)
	DeleteSync(key K) error
}

func NewLevelDBIndexer

func NewLevelDBIndexer[K comparable, V any](
	dbDir string,
	opts *opt.Options,
	keyToBytes func(K) []byte,
	bytesToKey func([]byte) (K, error)) (Indexer[K, V], error)

func NewMemoryIndexer

func NewMemoryIndexer[K comparable, V any]() (Indexer[K, V], error)

NewMemoryIndexer creates a new in-memory indexer

type LevelDBIndexer

type LevelDBIndexer[K comparable, V any] struct {
	// contains filtered or unexported fields
}

func (*LevelDBIndexer[K, V]) Close

func (m *LevelDBIndexer[K, V]) Close() error

func (*LevelDBIndexer[K, V]) Delete

func (m *LevelDBIndexer[K, V]) Delete(key K) error

func (*LevelDBIndexer[K, V]) DeleteSync

func (m *LevelDBIndexer[K, V]) DeleteSync(key K) error

DeleteSync deletes a key with fsync for durability.

func (*LevelDBIndexer[K, V]) Destroy

func (m *LevelDBIndexer[K, V]) Destroy() error

func (*LevelDBIndexer[K, V]) Get

func (m *LevelDBIndexer[K, V]) Get(key K) (V, error)

func (*LevelDBIndexer[K, V]) Iterate

func (m *LevelDBIndexer[K, V]) Iterate(f func(key K, value V) error) error

func (*LevelDBIndexer[K, V]) Put

func (m *LevelDBIndexer[K, V]) Put(key K, value V) error

func (*LevelDBIndexer[K, V]) PutSync

func (m *LevelDBIndexer[K, V]) PutSync(key K, value V) error

PutSync writes a key-value pair with fsync for durability. Use this for critical operations like RefCount updates.

func (*LevelDBIndexer[K, V]) Stream

func (m *LevelDBIndexer[K, V]) Stream(filter func(value V) bool) <-chan V

func (*LevelDBIndexer[K, V]) Sync

func (m *LevelDBIndexer[K, V]) Sync() error

Sync forces all buffered writes to disk. This is useful for periodic checkpoints to limit data loss window.

type MemoryIndexer

type MemoryIndexer[K comparable, V any] struct {
	// contains filtered or unexported fields
}

MemoryIndexer is an in-memory implementation of Indexer for testing

func (*MemoryIndexer[K, V]) Close

func (m *MemoryIndexer[K, V]) Close() error

func (*MemoryIndexer[K, V]) Delete

func (m *MemoryIndexer[K, V]) Delete(key K) error

func (*MemoryIndexer[K, V]) DeleteSync

func (m *MemoryIndexer[K, V]) DeleteSync(key K) error

DeleteSync is identical to Delete for in-memory indexer (no disk to sync)

func (*MemoryIndexer[K, V]) Destroy

func (m *MemoryIndexer[K, V]) Destroy() error

func (*MemoryIndexer[K, V]) Get

func (m *MemoryIndexer[K, V]) Get(key K) (V, error)

func (*MemoryIndexer[K, V]) Iterate

func (m *MemoryIndexer[K, V]) Iterate(fn func(key K, value V) error) error

func (*MemoryIndexer[K, V]) Put

func (m *MemoryIndexer[K, V]) Put(key K, value V) error

func (*MemoryIndexer[K, V]) PutSync

func (m *MemoryIndexer[K, V]) PutSync(key K, value V) error

PutSync is identical to Put for in-memory indexer (no disk to sync)

func (*MemoryIndexer[K, V]) Stream

func (m *MemoryIndexer[K, V]) Stream(filter func(value V) bool) <-chan V

func (*MemoryIndexer[K, V]) Sync

func (m *MemoryIndexer[K, V]) Sync() error

Jump to

Keyboard shortcuts

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