Documentation ¶
Index ¶
- Constants
- type EIndex
- type EjectionMode
- type Pool
- func (p *Pool) Add(entityId flow.Identifier, entity flow.Entity, owner uint64) (i EIndex, slotAvailable bool, ejectionOccurred bool)
- func (p Pool) All() []PoolEntity
- func (p Pool) Get(entityIndex EIndex) (flow.Identifier, flow.Entity, uint64)
- func (p Pool) Head() (flow.Entity, bool)
- func (p *Pool) Remove(sliceIndex EIndex)
- func (p Pool) Size() uint32
- type PoolEntity
Constants ¶
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 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) Head ¶
Head returns the head of used items. Assuming no ejection happened and pool never goes beyond limit, Head returns the first inserted element.
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