View Source
const (
	// Binary SI Byte Units
	UnitKiB = "KiB"
	UnitMiB = "MiB"
	UnitGiB = "GiB"
	UnitTiB = "TiB"
	UnitPiB = "PiB"
	UnitEiB = "EiB"

	// Decimal SI Byte Units
	UnitkB = "kB"
	UnitKB = "KB"
	UnitMB = "MB"
	UnitGB = "GB"
	UnitTB = "TB"
	UnitPB = "PB"
	UnitEB = "EB"

	// Binary SI Byte Rates
	UnitKiBPerS = "KiB/s"
	UnitMiBPerS = "MiB/s"
	UnitGiBPerS = "GiB/s"
	UnitTiBPerS = "TiB/s"
	UnitPiBPerS = "PiB/s"
	UnitEiBPerS = "EiB/s"

	// Decimal SI Byte Rates
	UnitkBPerS = "kB/s"
	UnitKBPerS = "KB/s"
	UnitMBPerS = "MB/s"
	UnitGBPerS = "GB/s"
	UnitTBPerS = "TB/s"
	UnitPBPerS = "PB/s"
	UnitEBPerS = "EB/s"

	// Hertz units
	UnitMHz = "MHz"
	UnitGHz = "GHz"

	// Watts units
	UnitmW = "mW"
	UnitW  = "W"
	UnitkW = "kW"
	UnitMW = "MW"
	UnitGW = "GW"


View Source
var (

	// UnitIndex is a map of unit name to unit
	UnitIndex = make(map[string]*Unit, numUnits)


func ConvertProtoAttributeMap

func ConvertProtoAttributeMap(in map[string]*proto.Attribute) map[string]*Attribute

func ConvertStructAttributeMap

func ConvertStructAttributeMap(in map[string]*Attribute) map[string]*proto.Attribute

func ConvertStructStatObject

func ConvertStructStatObject(in *StatObject) *proto.StatObject

ConvertStructStatObject converts between a struct and proto StatObject

func ConvertStructStatValue

func ConvertStructStatValue(in *StatValue) *proto.StatValue

ConvertStructStatValue converts between a struct and proto StatValue

func ConvertStructsAttribute

func ConvertStructsAttribute(in *Attribute) *proto.Attribute

func CopyMapStringAttribute

func CopyMapStringAttribute(in map[string]*Attribute) map[string]*Attribute

CopyMapStringAttribute copies a map of string to Attribute

func Pow

func Pow(a, b int64) int64

func ReattachConfigToGoPlugin

func ReattachConfigToGoPlugin(rc *ReattachConfig) (*plugin.ReattachConfig, error)

ReattachConfigToGoPlugin converts a ReattachConfig wrapper struct into a go plugin ReattachConfig struct


type Attribute

type Attribute struct {
	// Float is the float value for the attribute
	Float *float64

	// Int is the int value for the attribute
	Int *int64

	// String is the string value for the attribute
	String *string

	// Bool is the bool value for the attribute
	Bool *bool

	// Unit is the optional unit for the set int or float value
	Unit string

Attribute is used to describe the value of an attribute, optionally specifying units

func ConvertProtoAttribute

func ConvertProtoAttribute(in *proto.Attribute) *Attribute

func NewBoolAttribute

func NewBoolAttribute(b bool) *Attribute

NewBoolAttribute returns a new boolean attribute.

func NewFloatAttribute

func NewFloatAttribute(f float64, unit string) *Attribute

NewFloatAttribute returns a new float attribute. The unit is not checked to be valid.

func NewIntAttribute

func NewIntAttribute(i int64, unit string) *Attribute

NewIntergerAttribute returns a new integer attribute. The unit is not checked to be valid.

func NewStringAttribute

func NewStringAttribute(s string) *Attribute

NewStringAttribute returns a new string attribute.

func ParseAttribute

func ParseAttribute(input string) *Attribute

ParseAttribute takes a string and parses it into an attribute, pulling out units if they are specified as a suffix on a number.

func (*Attribute) Comparable

func (a *Attribute) Comparable(b *Attribute) bool

Comparable returns whether the two attributes are comparable

func (*Attribute) Compare

func (a *Attribute) Compare(b *Attribute) (int, bool)

Compare compares two attributes. If the returned boolean value is false, it means the values are not comparable, either because they are of different types (bool versus int) or the units are incompatible for comparison. The returned int will be 0 if a==b, -1 if a < b, and +1 if a > b for all values but bool. For bool it will be 0 if a==b or 1 if a!=b.

func (*Attribute) Copy

func (a *Attribute) Copy() *Attribute

Copy returns a copied version of the attribute

func (*Attribute) GetBool

func (a *Attribute) GetBool() (value bool, ok bool)

GetBool returns the boolean value of the attribute or false if the attribute doesn't contain a boolean.

func (*Attribute) GetFloat

func (a *Attribute) GetFloat() (value float64, ok bool)

GetFloat returns the float value of the attribute or false if the attribute doesn't contain a float.

func (*Attribute) GetInt

func (a *Attribute) GetInt() (value int64, ok bool)

GetInt returns the integer value of the attribute or false if the attribute doesn't contain a integer.

func (*Attribute) GetString

func (a *Attribute) GetString() (value string, ok bool)

GetString returns the string value of the attribute or false if the attribute doesn't contain a string.

func (*Attribute) GoString

func (a *Attribute) GoString() string

GoString returns a string representation of the attribute

func (*Attribute) Validate

func (a *Attribute) Validate() error

Validate checks if the attribute is valid

type BaseUnit

type BaseUnit uint16

BaseUnit is a unique base unit. All units that share the same base unit should be comparable.

const (
	UnitScalar BaseUnit = iota

type ReattachConfig

type ReattachConfig struct {
	Protocol string
	Network  string
	Addr     string
	Pid      int

ReattachConfig is a wrapper around plugin.ReattachConfig to better support serialization

func ReattachConfigFromGoPlugin

func ReattachConfigFromGoPlugin(plug *plugin.ReattachConfig) *ReattachConfig

ReattachConfigFromGoPlugin converts a go plugin ReattachConfig into a ReattachConfig wrapper struct

type StatObject

type StatObject struct {
	// Nested is a mapping of object name to a nested stats object.
	Nested map[string]*StatObject

	// Attributes is a mapping of statistic name to its value.
	Attributes map[string]*StatValue

StatObject is a collection of statistics either exposed at the top level or via nested StatObjects.

func ConvertProtoStatObject

func ConvertProtoStatObject(in *proto.StatObject) *StatObject

ConvertProtoStatObject converts between a proto and struct StatObject

type StatValue

type StatValue struct {
	// FloatNumeratorVal exposes a floating point value. If denominator is set
	// it is assumed to be a fractional value, otherwise it is a scalar.
	FloatNumeratorVal   *float64 `json:",omitempty"`
	FloatDenominatorVal *float64 `json:",omitempty"`

	// IntNumeratorVal exposes a int value. If denominator is set it is assumed
	// to be a fractional value, otherwise it is a scalar.
	IntNumeratorVal   *int64 `json:",omitempty"`
	IntDenominatorVal *int64 `json:",omitempty"`

	// StringVal exposes a string value. These are likely annotations.
	StringVal *string `json:",omitempty"`

	// BoolVal exposes a boolean statistic.
	BoolVal *bool `json:",omitempty"`

	// Unit gives the unit type: °F, %, MHz, MB, etc.
	Unit string `json:",omitempty"`

	// Desc provides a human readable description of the statistic.
	Desc string `json:",omitempty"`

StatValue exposes the values of a particular statistic. The value may be of type float, integer, string or boolean. Numeric types can be exposed as a single value or as a fraction.

func ConvertProtoStatValue

func ConvertProtoStatValue(in *proto.StatValue) *StatValue

ConvertProtoStatValue converts between a proto and struct StatValue

type Unit

type Unit struct {
	// Name is the name of the unit (GiB, MB/s)
	Name string

	// Base is the base unit for the unit
	Base BaseUnit

	// Multiplier is the multiplier over the base unit (KiB multiplier is 1024)
	Multiplier int64

	// InverseMultiplier specifies that the multiplier is an inverse so:
	// Base / Multiplier. For example a mW is a W/1000.
	InverseMultiplier bool

Unit describes a unit and its multiplier over the base unit type

func (*Unit) Comparable

func (u *Unit) Comparable(o *Unit) bool

Comparable returns if two units are comparable


Path Synopsis