buffers

package
v0.0.0-...-976bbae Latest Latest
Warning

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

Go to latest
Published: Aug 2, 2023 License: MIT Imports: 8 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrBuffers = errors.New("buffers error")

ErrBuffers базовая ошибка buffers

View Source
var ErrFailedToAssignBlockToBuffer = errors.Wrap(ErrBuffers, "failed to assign a block to buffer")

ErrFailedToAssignBlockToBuffer — ошибка при связывании буыера с блоком

View Source
var ErrNoAvailableBuffers = errors.Wrap(ErrBuffers, "no available buffers")

ErrNoAvailableBuffers — нет свободных буферов в памяти

Functions

This section is empty.

Types

type Buffer

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

Buffer — страница в пуле буферов

func NewBuffer

func NewBuffer(fm *storage.Manager, lm *wal.Manager) *Buffer

NewBuffer создает новый объект буфера

func (*Buffer) AssignToBlock

func (buf *Buffer) AssignToBlock(block types.Block) error

AssignToBlock cвязывает страницу буфера со странице на диске

func (*Buffer) Block

func (buf *Buffer) Block() types.Block

Block возвращает блок

func (*Buffer) Content

func (buf *Buffer) Content() *types.Page

Content возвращает страницу с соlержимым буфера

func (*Buffer) Flush

func (buf *Buffer) Flush() error

Flush сбрасывает страницу из памяти на диск

func (*Buffer) IsPinned

func (buf *Buffer) IsPinned() bool

IsPinned возвращает признак закрплена страница или нет

func (*Buffer) LSN

func (buf *Buffer) LSN() types.LSN

Возвращает LSN

func (*Buffer) ModifyingTX

func (buf *Buffer) ModifyingTX() types.TRX

ModifyingTX возвращает указатель транзакции

func (*Buffer) Pin

func (buf *Buffer) Pin()

Pin закрепляет страницу в памяти и увеличивает счетчик закрпелений

func (*Buffer) Pins

func (buf *Buffer) Pins() int

Возвращает LSN

func (*Buffer) SetModified

func (buf *Buffer) SetModified(txnum types.TRX, lsn types.LSN)

SetModified устанавливает указатели транзакции и лога

func (*Buffer) Unpin

func (buf *Buffer) Unpin()

Unpin уменьщает счетчик закреплений в памяти

type BuffersPool

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

func NewBuffersPool

func NewBuffersPool(bLen int, nbf newBufferFunc) *BuffersPool

NewBuffersPool создает новый пул буферов

func (*BuffersPool) AssignBufferToBlock

func (bp *BuffersPool) AssignBufferToBlock(buf *Buffer, block types.Block) error

AssignBufferToBlock связывает буфер с блоком на диске

func (*BuffersPool) Buffers

func (bp *BuffersPool) Buffers() []*Buffer

Buffers возвращает массив буферов в виде слайса

func (*BuffersPool) ChooseUnpinnedBuffer

func (bp *BuffersPool) ChooseUnpinnedBuffer() *Buffer

ChooseUnpinnedBuffer ищет незакрепленные буферы в памяти

func (*BuffersPool) FindExistingBuffer

func (bp *BuffersPool) FindExistingBuffer(block types.Block) *Buffer

FindExistingBuffer ищет существующий буфер, соотоветсвующий блоку

func (*BuffersPool) FlushAll

func (bp *BuffersPool) FlushAll(txnum types.TRX) error

FlushAll сбрасывает на диск все блоки, соответствующие транзакции

type Manager

type Manager struct {
	Len            int
	PinLockTimeout time.Duration
	// contains filtered or unexported fields
}

Manager менеджер буферов в памяти

func NewManager

func NewManager(fm *storage.Manager, lm *wal.Manager, pLen int, opts ...ManagerOpt) *Manager

NewManager создает новый менеджер пулов

func (*Manager) Available

func (bm *Manager) Available() int

Available возвращает число доступных буферов

func (*Manager) FlushAll

func (bm *Manager) FlushAll(txnum types.TRX) error

FlushAll сбрасывает все буферы транзакции на диск

func (*Manager) Pin

func (bm *Manager) Pin(block types.Block) (*Buffer, error)

Pin — закрепляет блок в памяти

func (*Manager) SetMaxPinLockTime

func (bm *Manager) SetMaxPinLockTime(t time.Duration)

SetMaxPinLockTime Задает максимальное время ожидания освобождения буферов

func (*Manager) StorageManager

func (bm *Manager) StorageManager() *storage.Manager

StorageManager возвращает менеджер хранилища

func (*Manager) Unpin

func (bm *Manager) Unpin(buf *Buffer)

Unpin уменьшает счетчик закреплений. Если буфер освободился, то дает сигнал другим потокам, что появился свободный буфер

type ManagerOpt

type ManagerOpt func(*Manager)

func WithPinLockTimeout

func WithPinLockTimeout(pinLockTimeout time.Duration) ManagerOpt

Jump to

Keyboard shortcuts

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