storage

package
v0.0.0-...-b0ba375 Latest Latest
Warning

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

Go to latest
Published: Apr 30, 2024 License: GPL-3.0, BSD-2-Clause Imports: 14 Imported by: 0

Documentation

Overview

Package storage provides storage abstraction for LevelDB.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidFile = errors.New("leveldb/storage: invalid file for argument")
	ErrLocked      = errors.New("leveldb/storage: already locked")
	ErrClosed      = errors.New("leveldb/storage: closed")
)

Functions

func FileDescOk

func FileDescOk(fd FileDesc) bool

FileDescOk returns true if fd is a valid file descriptor.

Types

type ErrCorrupted

type ErrCorrupted struct {
	Fd  FileDesc
	Err error
}

ErrCorrupted is the type that wraps errors that indicate corruption of a file. Package storage has its own type instead of using errors.ErrCorrupted to prevent circular import.

func (*ErrCorrupted) Error

func (e *ErrCorrupted) Error() string

type FileDesc

type FileDesc struct {
	Type FileType
	Num  int64
}

FileDesc is a file descriptor.

func (FileDesc) Nil

func (fd FileDesc) Nil() bool

Nil returns true if fd == (FileDesc{}).

func (FileDesc) String

func (fd FileDesc) String() string

type FileType

type FileType int
const (
	TypeManifest FileType = 1 << iota
	TypeJournal
	TypeTable
	TypeTemp

	TypeAll = TypeManifest | TypeJournal | TypeTable | TypeTemp
)

func (FileType) String

func (t FileType) String() string

type Lock

type Lock interface {
	util.Releaser
}

type Reader

type Reader interface {
	io.ReadSeeker
	io.ReaderAt
	io.Closer
}

Reader is the interface that groups the basic Read, Seek, ReadAt and Close methods.

type Storage

type Storage interface {
	// Lock locks the storage. Any subsequent attempt to call Lock will fail
	// until the last lock released.
	// After use the caller should call the Release method.
	Lock() (Lock, error)

	// Log logs a string. This is used for logging.
	// An implementation may write to a file, stdout or simply do nothing.
	Log(str string)

	// SetMeta sets to point to the given fd, which then can be acquired using
	// GetMeta method.
	// SetMeta should be implemented in such way that changes should happened
	// atomically.
	SetMeta(fd FileDesc) error

	// GetManifest returns a manifest file.
	// Returns os.ErrNotExist if meta doesn't point to any fd, or point to fd
	// that doesn't exist.
	GetMeta() (FileDesc, error)

	// List returns fds that match the given file types.
	// The file types may be OR'ed together.
	List(ft FileType) ([]FileDesc, error)

	// Open opens file with the given fd read-only.
	// Returns os.ErrNotExist error if the file does not exist.
	// Returns ErrClosed if the underlying storage is closed.
	Open(fd FileDesc) (Reader, error)

	// Create creates file with the given fd, truncate if already exist and
	// opens write-only.
	// Returns ErrClosed if the underlying storage is closed.
	Create(fd FileDesc) (Writer, error)

	// Remove removes file with the given fd.
	// Returns ErrClosed if the underlying storage is closed.
	Remove(fd FileDesc) error

	// Rename renames file from oldfd to newfd.
	// Returns ErrClosed if the underlying storage is closed.
	Rename(oldfd, newfd FileDesc) error

	// Close closes the storage.
	// It is valid to call Close multiple times. Other methods should not be
	// called after the storage has been closed.
	Close() error
}

Storage is the storage. A storage instance must be goroutine-safe.

func NewMemStorage

func NewMemStorage() Storage

NewMemStorage returns a new memory-backed storage implementation.

func OpenFile

func OpenFile(path string, readOnly bool) (Storage, error)

OpenFile returns a new filesytem-backed storage implementation with the given path. This also acquire a file lock, so any subsequent attempt to open the same path will fail.

The storage must be closed after use, by calling Close method.

type Syncer

type Syncer interface {
	// Sync commits the current contents of the file to stable storage.
	Sync() error
}

Syncer is the interface that wraps basic Sync method.

type Writer

type Writer interface {
	io.WriteCloser
	Syncer
}

Writer is the interface that groups the basic Write, Sync and Close methods.

Jump to

Keyboard shortcuts

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