You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

pack.go 695B

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