Documentation ¶
Index ¶
- Constants
- Variables
- type ExecutionWeights
- type Meter
- func (m *Meter) ComputationIntensities() interfaceMeter.MeteredIntensities
- func (m *Meter) MemoryIntensities() interfaceMeter.MeteredIntensities
- func (m *Meter) MergeMeter(child interfaceMeter.Meter, enforceLimits bool) error
- func (m *Meter) MeterComputation(kind common.ComputationKind, intensity uint) error
- func (m *Meter) MeterMemory(kind common.ComputationKind, intensity uint) error
- func (m *Meter) NewChild() interfaceMeter.Meter
- func (m *Meter) SetComputationWeights(weights map[common.ComputationKind]uint64)
- func (m *Meter) SetMemoryWeights(weights map[common.ComputationKind]uint64)
- func (m *Meter) TotalComputationLimit() uint
- func (m *Meter) TotalComputationUsed() uint
- func (m *Meter) TotalMemoryLimit() uint
- func (m *Meter) TotalMemoryUsed() uint
- type WeightedMeterOptions
Constants ¶
const MeterInternalPrecisionBytes = 16
MeterInternalPrecisionBytes are the amount of bytes that are used internally by the Meter to allow for metering computation smaller than one unit of computation. This allows for more fine weights. A weight of 1 unit of computation is equal to 1<<16. The minimum possible weight is 1/65536.
Variables ¶
var ( // DefaultComputationWeights is the default weights for computation intensities // these weighs make the computation metering the same as it was before dynamic execution fees DefaultComputationWeights = ExecutionWeights{ common.ComputationKindStatement: 1 << MeterInternalPrecisionBytes, common.ComputationKindLoop: 1 << MeterInternalPrecisionBytes, common.ComputationKindFunctionInvocation: 1 << MeterInternalPrecisionBytes, } // DefaultMemoryWeights are empty as memory metering is not fully defined yet DefaultMemoryWeights = ExecutionWeights{} )
Functions ¶
This section is empty.
Types ¶
type ExecutionWeights ¶
type ExecutionWeights map[common.ComputationKind]uint64
type Meter ¶
type Meter struct {
// contains filtered or unexported fields
}
Meter collects memory and computation usage and enforces limits for any each memory/computation usage call it sums intensity multiplied by the weight of the intensity to the total memory/computation usage metrics and returns error if limits are not met.
func NewMeter ¶
func NewMeter(computationLimit, memoryLimit uint, options ...WeightedMeterOptions) *Meter
NewMeter constructs a new Meter
func (*Meter) ComputationIntensities ¶
func (m *Meter) ComputationIntensities() interfaceMeter.MeteredIntensities
ComputationIntensities returns all the measured computational intensities
func (*Meter) MemoryIntensities ¶
func (m *Meter) MemoryIntensities() interfaceMeter.MeteredIntensities
MemoryIntensities returns all the measured memory intensities
func (*Meter) MergeMeter ¶
func (m *Meter) MergeMeter(child interfaceMeter.Meter, enforceLimits bool) error
MergeMeter merges the input meter into the current meter and checks for the limits
func (*Meter) MeterComputation ¶
func (m *Meter) MeterComputation(kind common.ComputationKind, intensity uint) error
MeterComputation captures computation usage and returns an error if it goes beyond the limit
func (*Meter) MeterMemory ¶
func (m *Meter) MeterMemory(kind common.ComputationKind, intensity uint) error
MeterMemory captures memory usage and returns an error if it goes beyond the limit
func (*Meter) NewChild ¶
func (m *Meter) NewChild() interfaceMeter.Meter
NewChild construct a new Meter instance with the same limits as parent
func (*Meter) SetComputationWeights ¶
func (m *Meter) SetComputationWeights(weights map[common.ComputationKind]uint64)
SetComputationWeights sets the computation weights
func (*Meter) SetMemoryWeights ¶
func (m *Meter) SetMemoryWeights(weights map[common.ComputationKind]uint64)
SetMemoryWeights sets the memory weights
func (*Meter) TotalComputationLimit ¶
TotalComputationLimit returns the total computation limit
func (*Meter) TotalComputationUsed ¶
TotalComputationUsed returns the total computation used
func (*Meter) TotalMemoryLimit ¶
TotalMemoryLimit returns the total memory limit
func (*Meter) TotalMemoryUsed ¶
TotalMemoryUsed returns the total memory used
type WeightedMeterOptions ¶
type WeightedMeterOptions func(*Meter)
func WithComputationWeights ¶
func WithComputationWeights(weights ExecutionWeights) WeightedMeterOptions
WithComputationWeights sets the weights for computation intensities
func WithMemoryWeights ¶
func WithMemoryWeights(weights ExecutionWeights) WeightedMeterOptions
WithMemoryWeights sets the weights for the memory intensities