// 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 }