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