Temporarily add go-agentx (w/ fixes to lexico ordering)
This commit is contained in:
56
go-agentx/pdu/variables.go
Normal file
56
go-agentx/pdu/variables.go
Normal file
@ -0,0 +1,56 @@
|
||||
// Copyright 2018 The agentx authors
|
||||
// Licensed under the LGPLv3 with static-linking exception.
|
||||
// See LICENCE file for details.
|
||||
|
||||
package pdu
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"github.com/posteo/go-agentx/value"
|
||||
)
|
||||
|
||||
// Variables defines a list of variable bindings.
|
||||
type Variables []Variable
|
||||
|
||||
// Add adds the provided variable.
|
||||
func (v *Variables) Add(oid value.OID, t VariableType, value interface{}) {
|
||||
variable := Variable{}
|
||||
variable.Set(oid, t, value)
|
||||
*v = append(*v, variable)
|
||||
}
|
||||
|
||||
// MarshalBinary returns the pdu packet as a slice of bytes.
|
||||
func (v *Variables) MarshalBinary() ([]byte, error) {
|
||||
result := []byte{}
|
||||
for _, variable := range *v {
|
||||
data, err := variable.MarshalBinary()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, data...)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
// UnmarshalBinary sets the packet structure from the provided slice of bytes.
|
||||
func (v *Variables) UnmarshalBinary(data []byte) error {
|
||||
*v = make([]Variable, 0)
|
||||
for offset := 0; offset < len(data); {
|
||||
variable := Variable{}
|
||||
if err := variable.UnmarshalBinary(data[offset:]); err != nil {
|
||||
return err
|
||||
}
|
||||
*v = append(*v, variable)
|
||||
offset += variable.ByteSize()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (v Variables) String() string {
|
||||
parts := make([]string, len(v))
|
||||
for index, va := range v {
|
||||
parts[index] = va.String()
|
||||
}
|
||||
return "[variables " + strings.Join(parts, ", ") + "]"
|
||||
}
|
Reference in New Issue
Block a user