storage

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 12, 2018 License: MIT Imports: 9 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChunkStorage

type ChunkStorage interface {

	// List chunks for which we have *any* stored versions, in no particular order
	ListChunksWithData() ([]apis.ChunkNum, error)

	// List all versions we have for a certain chunk, in ascending order
	// If the chunk doesn't exist at all, no error is returned -- just an empty slice.
	ListVersions(chunk apis.ChunkNum) ([]apis.Version, error)
	// Read the entire contents of a particular version of a particular chunk
	// note: version *cannot* be AnyVersion
	ReadVersion(chunk apis.ChunkNum, version apis.Version) ([]byte, error)
	// Write the entire contents of a new version for a chunk.
	// data cannot be larger than apis.MaxChunkSize. The storage layer may pad
	// out the written data with additional zeroes, up to apis.MaxChunkSize.
	WriteVersion(chunk apis.ChunkNum, version apis.Version, data []byte) error
	// Delete an existing version of a chunk.
	DeleteVersion(chunk apis.ChunkNum, version apis.Version) error

	// List chunks for which we've stored a latest version.
	ListChunksWithLatest() ([]apis.ChunkNum, error)

	// Get the "latest version" (to report to clients) of a particular chunk.
	// Returns an error if no version was stored for this chunk.
	GetLatestVersion(chunk apis.ChunkNum) (apis.Version, error)
	// Update the "latest version" (to report to clients) of a particular chunk.
	SetLatestVersion(chunk apis.ChunkNum, latest apis.Version) error
	// Remove records storing the latest version for a particular chunk.
	DeleteLatestVersion(chunk apis.ChunkNum) error

	// Empty any caches and tear down all storage state.
	// Use of other methods after call this method is undefined behavior. Calling Close() again has no effect.
	Close()
}

An interface to a storage system for chunks and version information. This interface is expected to be write-immediate; changes made should be flushed to disk before each mutation returns. This interface is NOT normally threadsafe! Uses of it must be confined to a single thread.

func ConfigureBlockStorage

func ConfigureBlockStorage(devicepath string) (ChunkStorage, error)

Given a path to a raw block device, construct an interface by which a chunkserver can store chunks

func ConfigureFilesystemStorage

func ConfigureFilesystemStorage(basepath string) (ChunkStorage, error)

Given a base path for storage of files in a modern filesystem, construct an interface by which a chunkserver can store chunks.

func ConfigureMemoryStorage

func ConfigureMemoryStorage() (ChunkStorage, error)

Creates an in-memory-only location to store data, and construct an interface by which a chunkserver can store chunks

type FilesystemStorage

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

func (*FilesystemStorage) Close

func (m *FilesystemStorage) Close()

func (*FilesystemStorage) DeleteLatestVersion

func (m *FilesystemStorage) DeleteLatestVersion(chunk apis.ChunkNum) error

func (*FilesystemStorage) DeleteVersion

func (m *FilesystemStorage) DeleteVersion(chunk apis.ChunkNum, version apis.Version) error

func (*FilesystemStorage) GetLatestVersion

func (m *FilesystemStorage) GetLatestVersion(chunk apis.ChunkNum) (apis.Version, error)

func (*FilesystemStorage) ListChunksWithData

func (m *FilesystemStorage) ListChunksWithData() ([]apis.ChunkNum, error)

func (*FilesystemStorage) ListChunksWithLatest

func (m *FilesystemStorage) ListChunksWithLatest() ([]apis.ChunkNum, error)

func (*FilesystemStorage) ListVersions

func (m *FilesystemStorage) ListVersions(chunk apis.ChunkNum) ([]apis.Version, error)

func (*FilesystemStorage) ReadVersion

func (m *FilesystemStorage) ReadVersion(chunk apis.ChunkNum, version apis.Version) ([]byte, error)

func (*FilesystemStorage) SetLatestVersion

func (m *FilesystemStorage) SetLatestVersion(chunk apis.ChunkNum, latest apis.Version) error

func (*FilesystemStorage) WriteVersion

func (m *FilesystemStorage) WriteVersion(chunk apis.ChunkNum, version apis.Version, data []byte) error

type MemoryStorage

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

func (*MemoryStorage) Close

func (m *MemoryStorage) Close()

func (*MemoryStorage) DeleteLatestVersion

func (m *MemoryStorage) DeleteLatestVersion(chunk apis.ChunkNum) error

func (*MemoryStorage) DeleteVersion

func (m *MemoryStorage) DeleteVersion(chunk apis.ChunkNum, version apis.Version) error

func (*MemoryStorage) GetLatestVersion

func (m *MemoryStorage) GetLatestVersion(chunk apis.ChunkNum) (apis.Version, error)

func (*MemoryStorage) ListChunksWithData

func (m *MemoryStorage) ListChunksWithData() ([]apis.ChunkNum, error)

func (*MemoryStorage) ListChunksWithLatest

func (m *MemoryStorage) ListChunksWithLatest() ([]apis.ChunkNum, error)

func (*MemoryStorage) ListVersions

func (m *MemoryStorage) ListVersions(chunk apis.ChunkNum) ([]apis.Version, error)

func (*MemoryStorage) ReadVersion

func (m *MemoryStorage) ReadVersion(chunk apis.ChunkNum, version apis.Version) ([]byte, error)

func (*MemoryStorage) SetLatestVersion

func (m *MemoryStorage) SetLatestVersion(chunk apis.ChunkNum, latest apis.Version) error

func (*MemoryStorage) StatsForTesting

func (m *MemoryStorage) StatsForTesting() int

returns semi-fake storage usage stats for testing

func (*MemoryStorage) WriteVersion

func (m *MemoryStorage) WriteVersion(chunk apis.ChunkNum, version apis.Version, data []byte) error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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