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  }