code.gitea.io/gitea@v1.19.3/modules/util/pack.go (about) 1 // Copyright 2023 The Gitea Authors. All rights reserved. 2 // SPDX-License-Identifier: MIT 3 4 package util 5 6 import ( 7 "bytes" 8 "encoding/gob" 9 ) 10 11 // PackData uses gob to encode the given data in sequence 12 func PackData(data ...interface{}) ([]byte, error) { 13 var buf bytes.Buffer 14 enc := gob.NewEncoder(&buf) 15 for _, datum := range data { 16 if err := enc.Encode(datum); err != nil { 17 return nil, err 18 } 19 } 20 return buf.Bytes(), nil 21 } 22 23 // UnpackData uses gob to decode the given data in sequence 24 func UnpackData(buf []byte, data ...interface{}) error { 25 r := bytes.NewReader(buf) 26 enc := gob.NewDecoder(r) 27 for _, datum := range data { 28 if err := enc.Decode(datum); err != nil { 29 return err 30 } 31 } 32 return nil 33 }