heropool

package
v0.28.5 Latest Latest
Warning

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

Go to latest
Published: Oct 24, 2022 License: AGPL-3.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RandomEjection = EjectionMode("random-ejection")
	LRUEjection    = EjectionMode("lru-ejection")
	NoEjection     = EjectionMode("no-ejection")
)

Variables

This section is empty.

Functions

This section is empty.

Types

type EIndex

type EIndex uint32

EIndex is data type representing an entity index in Pool.

type EjectionMode

type EjectionMode string

type Pool

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

func NewHeroPool

func NewHeroPool(sizeLimit uint32, ejectionMode EjectionMode) *Pool

func (*Pool) Add

func (p *Pool) Add(entityId flow.Identifier, entity flow.Entity, owner uint64) (i EIndex, slotAvailable bool, ejectionOccurred bool)

Add writes given entity into a poolEntity on the underlying entities linked-list.

The first boolean return value (slotAvailable) says whether pool has an available slot. Pool goes out of available slots if it is full and no ejection is set.

If the pool has an available slot (either empty or by ejection), then the second boolean returned value (ejectionOccurred) determines whether an ejection happened to make one slot free or not. Ejection happens if there is no available slot, and there is an ejection mode set.

func (Pool) All

func (p Pool) All() []PoolEntity

All returns all stored entities in this pool.

func (Pool) Get

func (p Pool) Get(entityIndex EIndex) (flow.Identifier, flow.Entity, uint64)

Get returns entity corresponding to the entity index from the underlying list.

func (Pool) Head added in v0.28.0

func (p Pool) Head() (flow.Entity, bool)

Head returns the head of used items. Assuming no ejection happened and pool never goes beyond limit, Head returns the first inserted element.

func (*Pool) Remove added in v0.27.0

func (p *Pool) Remove(sliceIndex EIndex)

Remove removes entity corresponding to given getSliceIndex from the list.

func (Pool) Size

func (p Pool) Size() uint32

Size returns total number of entities that this list maintains.

type PoolEntity

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

func (PoolEntity) Entity

func (p PoolEntity) Entity() flow.Entity

func (PoolEntity) Id

func (p PoolEntity) Id() flow.Identifier

Jump to

Keyboard shortcuts

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