Files
govpp-snmp-agentx/go-agentx/marshaler/multi.go

34 lines
793 B
Go

// Copyright 2018 The agentx authors
// Licensed under the LGPLv3 with static-linking exception.
// See LICENCE file for details.
package marshaler
import (
"encoding"
)
// Multi defines a binary marshaler that marshals all child marshalers
// and concatinate the results.
type Multi []encoding.BinaryMarshaler
// NewMulti returns a new instance of MultiBinaryMarshaler.
func NewMulti(marshalers ...encoding.BinaryMarshaler) Multi {
return Multi(marshalers)
}
// MarshalBinary marshals all the binary marshalers and concatinates the results.
func (m Multi) MarshalBinary() ([]byte, error) {
result := []byte{}
for _, marshaler := range m {
data, err := marshaler.MarshalBinary()
if err != nil {
return nil, err
}
result = append(result, data...)
}
return result, nil
}