var ( ErrInvalidFile = errors.New("leveldb/storage: invalid file for argument") ErrLocked = errors.New("leveldb/storage: already locked") ErrClosed = errors.New("leveldb/storage: closed") )
Common error.
func FileDescOk(fd FileDesc) bool
FileDescOk returns true if fd is a valid 'file descriptor'.
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 (e *ErrCorrupted) Error() string
type FileDesc struct { Type FileType Num int64 }
FileDesc is a 'file descriptor'.
func (fd FileDesc) String() string
func (fd FileDesc) Zero() bool
Zero returns true if fd == (FileDesc{}).
type FileType int
FileType represent a file type.
const ( TypeManifest FileType = 1 << iota TypeJournal TypeTable TypeTemp TypeAll = TypeManifest | TypeJournal | TypeTable | TypeTemp )
File types.
func (t FileType) String() string
type Locker interface { Unlock() }
Locker is the interface that wraps Unlock method.
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 interface { // Lock locks the storage. Any subsequent attempt to call Lock will fail // until the last lock released. // Caller should call Unlock method after use. Lock() (Locker, 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 store 'file descriptor' that can later be acquired using GetMeta // method. The 'file descriptor' should point to a valid file. // SetMeta should be implemented in such way that changes should happen // atomically. SetMeta(fd FileDesc) error // GetMeta returns 'file descriptor' stored in meta. The 'file descriptor' // can be updated using SetMeta method. // Returns os.ErrNotExist if meta doesn't store any 'file descriptor', or // 'file descriptor' point to nonexistent file. GetMeta() (FileDesc, error) // List returns file descriptors 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 'file descriptor' 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 'file descriptor', 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 'file descriptor'. // 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 safe for concurrent use.
func NewMemStorage() Storage
NewMemStorage returns a new memory-backed storage implementation.
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 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 interface { io.WriteCloser Syncer }
Writer is the interface that groups the basic Write, Sync and Close methods.