base

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2022 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrNoSpace = errors.New("buffer: no space left")
)

Functions

func NodeStateString

func NodeStateString(state NodeState) string

Types

type IEvictHandle

type IEvictHandle interface {
	sync.Locker
	IsClosed() bool
	Unload()
	Unloadable() bool
	Iteration() uint64
}

type IMemoryNode

type IMemoryNode interface {
	io.ReaderFrom
	io.WriterTo
	Marshal() ([]byte, error)
	Unmarshal([]byte) error
	FreeMemory()
	Reset()
	GetMemorySize() uint64
	GetMemoryCapacity() uint64
}

type INode

type INode interface {
	sync.Locker
	io.Closer
	common.IRef
	RLock()
	RUnlock()
	GetID() common.ID
	Unload()
	Unloadable() bool
	IsLoaded() bool
	Load()
	MakeHandle() INodeHandle
	Destroy()
	Size() uint64
	Iteration() uint64
	IncIteration() uint64
	IsClosed() bool
	GetState() NodeState
	Expand(uint64, func() error) error
}

type INodeHandle

type INodeHandle interface {
	io.Closer
	GetID() common.ID
	GetNode() INode
}

type INodeManager

type INodeManager interface {
	ISizeLimiter
	sync.Locker
	RLock()
	RUnlock()
	String() string
	Count() int
	RegisterNode(INode)
	UnregisterNode(INode)
	Pin(INode) INodeHandle
	TryPin(INode, time.Duration) (INodeHandle, error)
	Unpin(INode)
	MakeRoom(uint64) bool
}

type ISizeLimiter

type ISizeLimiter interface {
	Total() uint64
	ApplyQuota(uint64) bool
	RetuernQuota(uint64) uint64
}

type MemoryFreeFunc

type MemoryFreeFunc func(IMemoryNode)

type NodeState

type NodeState = uint32
const (
	NODE_UNLOAD NodeState = iota
	NODE_LOADING
	NODE_ROOLBACK
	NODE_COMMIT
	NODE_UNLOADING
	NODE_LOADED
)

Jump to

Keyboard shortcuts

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