Versions in this module Expand all Collapse all v0 v0.1.0 Apr 24, 2023 Changes in this version + const BlockSize + const ChunkDataSize + const ChunkHeaderSizeFixed + const ChunkKeyMaxSize + const DirDataSizeLv0 + const DirDataSizeLv1 + const DirDataSizeLv2 + const DirDataSizeLv3 + const DirDepth + const DirMaxDataSize + const MagicBocchi + const MagicChunk + const MajorVersion + const MaxBucketsPerSegment + const MaxKeyLength + const MinorVersion + const SectorSize + var DirSize = binary.Size(&Dir{}) + var ErrCacheMiss = errors.New("cache miss") + var ErrChunkDataTooLarge = errors.New("chunk data too large") + var ErrChunkKeyTooLarge = errors.New("chunk key too large") + var ErrChunkVerifyFailed = errors.New("chunk verify failed") + var ErrKeyTooLong = errors.New("key too long") + var ErrVolFileCorrupted = errors.New("vol file corrupted") + var HeaderSize = binary.Size(&VolHeaderFooter{}) + type Chunk struct + DataRaw []byte + Header ChunkHeader + func (c *Chunk) GetBinaryLength() Offset + func (c *Chunk) GetKeyData() ([]byte, []byte) + func (c *Chunk) MarshalBinary() ([]byte, error) + func (c *Chunk) ReadAt(r io.ReaderAt, off, size int64) error + func (c *Chunk) Set(key, data []byte) error + func (c *Chunk) UnmarshalBinary(data []byte) error + func (c *Chunk) Verify() error + func (c *Chunk) WriteAt(w io.WriterAt, off int64) error + type ChunkHeader struct + Checksum uint32 + DataLength uint32 + HeaderChecksum uint32 + HeaderSize uint32 + Key [ChunkKeyMaxSize]byte + Magic uint32 + func (c *ChunkHeader) GenerateHeaderChecksum() uint32 + func (c *ChunkHeader) MarshalBinary() ([]byte, error) + func (c *ChunkHeader) UnmarshalBinary(data []byte) error + type Dir struct + func (d *Dir) MarshalBinary() ([]byte, error) + func (d *Dir) UnmarshalBinary(data []byte) error + type DirManager struct + BucketsNum Offset + BucketsNumPerSegment Offset + ChunksNum Offset + DirFreeStart map[segId]uint16 + Dirs map[segId][]*Dir + SegMutexes map[segId]*sync.RWMutex + SegmentsNum Offset + func (dm *DirManager) DiagDumpAllDirs() + func (dm *DirManager) DiagDumpAllDirsToString() string + func (dm *DirManager) DiagHangFreeDirs() (int, error) + func (dm *DirManager) DiagHangUsedDirs() (int, error) + func (dm *DirManager) DiagPanicHangUpDirs() error + func (dm *DirManager) Get(key []byte) (hit bool, dirOffset Offset, d Dir) + func (dm *DirManager) Init(dirNum Offset) Offset + func (dm *DirManager) InitEmptyDirs() + func (dm *DirManager) MarshalBinary() (data []byte, err error) + func (dm *DirManager) Set(key []byte, off Offset, size int) (dirOffset Offset, err error) + func (dm *DirManager) UnmarshalBinary(data []byte) (err error) + type Engine struct + SizeMb uint32 + SliceSizeKb uint32 + Volume *Vol + func NewEngine(cfg *EngineConfig) *Engine + func (e *Engine) Delete(key []byte) error + func (e *Engine) Get(key []byte) ([]byte, error) + func (e *Engine) Init() error + func (e *Engine) Set(key, value []byte) error + type EngineConfig struct + Path string + SizeMb uint32 + SliceSizeKb uint32 + type Offset uint64 + type OffsetReaderWriterCloser interface + type Vol struct + ChunkAvgSize Offset + ChunksMaxNum Offset + DataOffset Offset + DirAOffset Offset + Dm *DirManager + FooterAOffset Offset + FooterBOffset Offset + Fp OffsetReaderWriterCloser + Header *VolHeaderFooter + HeaderAOffset Offset + HeaderBOffset Offset + Length Offset + Path string + SectorSize uint32 + WritePos Offset + func (v *Vol) Close() error + func (v *Vol) Get(key []byte) (hit bool, value []byte, err error) + func (v *Vol) Init(cfg *VolOptions) (corrupted bool, err error) + func (v *Vol) Set(key, value []byte) (err error) + func (v *Vol) SyncFlushLoop(interval time.Duration) + type VolHeaderFooter struct + Checksum uint32 + CreateUnixTime int64 + DirsChecksum uint32 + Magic uint32 + MajorVersion uint32 + MinorVersion uint32 + SyncSerial uint64 + WritePos Offset + func (v *VolHeaderFooter) GenerateChecksum() uint32 + func (v *VolHeaderFooter) MarshalBinary() (data []byte, err error) + func (v *VolHeaderFooter) UnmarshalBinary(data []byte) error + type VolOptions struct + ChunkSize Offset + FileSize Offset + FlushMetaInterval time.Duration + Fp OffsetReaderWriterCloser + func NewDefaultVolOptions(path string, fileSize, avgChunkSize uint64) (*VolOptions, error) + func (cfg *VolOptions) Check() error v0.1.0-rc1 Apr 24, 2023