Documentation
¶
Index ¶
Constants ¶
View Source
const ( TypeInMemory = "inmemory" TypeNormal = "normal" TypeHot = "hot" )
View Source
const ( ClockBits = 48 ClockMask = (1 << ClockBits) - 1 CounterBits = 16 RefsMask = (1 << CounterBits) - 1 )
Variables ¶
View Source
var ErrKeyNotFound = errors.New("key not found")
Functions ¶
This section is empty.
Types ¶
type Bucket ¶
type Bucket interface {
io.Closer
Operation
// ID returns the Bucket ID.
ID() string
// Weight returns the Bucket weight, range 0-1000.
Weight() int
// Allow returns the allow percent of the Bucket, range 0-100.
Allow() int
// UseAllow returns whether to use the allow percent.
UseAllow() bool
// Objects returns whether to all cached objects len.
Objects() uint64
// HasBad returns whether the Bucket is in bad state.
HasBad() bool
// Type returns the Bucket type, empty memory native
Type() string
// StoreType returns the Bucket store-type, cold hot fastmemory
StoreType() string
// Path returns the Bucket path.
Path() string
}
type CacheStatus ¶
type CacheStatus int
const ( // CacheMiss indicates the absence of a cached resource. CacheMiss CacheStatus = iota + 1 // CacheHit indicates the presence of a cached resource. CacheHit // CacheParentHit indicates the cache hit occurred in a parent cache layer. CacheParentHit // CachePartHit indicates a partial cache hit for a range request. CachePartHit // CacheRevalidateHit indicates a hit after cache validation with the origin server. CacheRevalidateHit // CacheRevalidateMiss indicates a miss after cache validation with the origin server. CacheRevalidateMiss // CachePartMiss indicates only non-range parts of a resource are cached, requiring origin fetch for range requests. CachePartMiss // CacheHotHit indicates a hit from a hot/fast-access cache layer. CacheHotHit // BYPASS indicates the request bypassed the cache entirely. BYPASS )
func (CacheStatus) String ¶
func (r CacheStatus) String() string
type File ¶
type File interface {
io.Closer
io.Reader
io.ReaderAt
// Unlike the specification for io.Writer.Write(), the vfs.File.Write()
// method *is* allowed to modify the slice passed in, whether temporarily
// or permanently. Callers of Write() need to take this into account.
io.Writer
// WriteAt() is only supported for files that were opened with FS.OpenReadWrite.
io.WriterAt
// Preallocate optionally preallocates storage for `length` at `offset`
// within the file. Implementations may choose to do nothing.
Stat() (os.FileInfo, error)
Sync() error
// Fd returns the raw file descriptor when a File is backed by an *os.File.
// It can be used for specific functionality like Prefetch.
// Returns InvalidFd if not supported.
Fd() uintptr
Name() string
}
File is a readable, writable sequence of bytes.
Typically, it will be an *os.File, but test code may choose to substitute memory-backed implementations.
Write-oriented operations (Write, Sync) must be called sequentially: At most 1 call to Write or Sync may be executed at any given time.
func WrapVFSFile ¶
type IndexDB ¶
type IndexDB interface {
io.Closer
// Get retrieves metadata for the given key from the IndexDB
// Returns the metadata object if found, or error if not found or on failure
Get(ctx context.Context, key []byte) (*object.Metadata, error)
// Set stores or updates metadata for the given key in the IndexDB
// Returns error if the operation fails
Set(ctx context.Context, key []byte, val *object.Metadata) error
// Exist checks if metadata exists for the given key
// Returns true if the key exists, false otherwise
Exist(ctx context.Context, key []byte) bool
// Delete removes metadata for the given key from the IndexDB
// Returns error if the operation fails
Delete(ctx context.Context, key []byte) error
// Iterate walks through all metadata entries with the given prefix
// Calls the provided function f for each entry found
// Returns error if the iteration fails
Iterate(ctx context.Context, prefix []byte, f IterateFunc) error
// Expired iterates through expired metadata entries
// Calls the provided function f for each expired entry
// Returns error if the iteration fails
Expired(ctx context.Context, f IterateFunc) error
// GC performs garbage collection on the IndexDB
// Returns error if the operation fails
GC(ctx context.Context) error
}
IndexDB represents the interface for metadata storage operations
type IndexDBFactory ¶
IndexDBFactory is a function that creates a new IndexDB instance It takes a path and an Option as arguments Returns the created IndexDB instance and an error if the operation fails
type Operation ¶
type Operation interface {
// Lookup retrieves the metadata for the specified object ID.
Lookup(ctx context.Context, id *object.ID) (*object.Metadata, error)
// Store store the metadata for the specified object ID.
Store(ctx context.Context, meta *object.Metadata) error
// Exist checks if the object exists.
Exist(ctx context.Context, id []byte) bool
// Remove soft-removes the object.
Remove(ctx context.Context, id *object.ID) error
// Discard hard-removes the object.
Discard(ctx context.Context, id *object.ID) error
// DiscardWithHash hard-removes the hash of the object.
DiscardWithHash(ctx context.Context, hash object.IDHash) error
// DiscardWithMessage hard-removes the object with a message.
DiscardWithMessage(ctx context.Context, id *object.ID, msg string) error
// DiscardWithMetadata hard-removes the object with a metadata.
DiscardWithMetadata(ctx context.Context, meta *object.Metadata) error
// Iterate iterates the objects.
Iterate(ctx context.Context, fn func(*object.Metadata) error) error
// Expired if the object is expired callback.
Expired(ctx context.Context, id *object.ID, md *object.Metadata) bool
// WriteChunkFile open chunk file and returns io.WriteCloser
WriteChunkFile(ctx context.Context, id *object.ID, index uint32) (io.WriteCloser, string, error)
// ReadChunkFile open chunk file and returns io.ReadCloser
ReadChunkFile(ctx context.Context, id *object.ID, index uint32) (File, string, error)
}
type Option ¶
type Option interface {
// DBType returns the type of the IndexDB
DBType() string
// DBPath returns the path to the IndexDB file
DBPath() string
// Codec returns the codec for encoding and decoding metadata
Codec() encoding.Codec
// Unmarshal decodes the given data into the provided interface
Unmarshal(v interface{}) error
}
Option is an interface for configuring the IndexDB options
type PurgeControl ¶
type PurgeControl struct {
Hard bool `json:"hard"` // 是否硬删除, default: false 与 MarkExpired 冲突
Dir bool `json:"dir"` // 是否清理目录, default: false
MarkExpired bool `json:"mark_expired"` // 是否标记为过期, default: false 与 Hard 冲突
}
func (PurgeControl) String ¶
func (r PurgeControl) String() string
type ResourceLocker ¶
type ResourceLocker interface {
// Key returns the lock key.
Key() string
// Lock acquires the lock.
Lock()
// Unlock releases the lock.
Unlock()
// RLock acquires a read lock.
RLock()
// RUnlock releases a read lock.
RUnlock()
}
type SharedKV ¶
type SharedKV interface {
io.Closer
Get(ctx context.Context, key []byte) ([]byte, error)
Set(ctx context.Context, key []byte, val []byte) error
Incr(ctx context.Context, key []byte, delta uint32) (uint32, error)
Decr(ctx context.Context, key []byte, delta uint32) (uint32, error)
GetCounter(ctx context.Context, key []byte) (uint32, error)
Delete(ctx context.Context, key []byte) error
DropPrefix(ctx context.Context, prefix []byte) error
Iterate(ctx context.Context, f func(key, val []byte) error) error
IteratePrefix(ctx context.Context, prefix []byte, f func(key, val []byte) error) error
}
Click to show internal directories.
Click to hide internal directories.