gob_codec.go 623 B

123456789101112131415161718192021222324252627282930
  1. package codec
  2. import (
  3. "bytes"
  4. "encoding/gob"
  5. "io"
  6. )
  7. type GobCodec struct {
  8. }
  9. func (codec *GobCodec) EncodeTo(w io.Writer, i interface{}) (err error) {
  10. return gob.NewEncoder(w).Encode(i)
  11. }
  12. func (codec *GobCodec) DecodeFrom(r io.Reader, i interface{}) (err error) {
  13. return gob.NewDecoder(r).Decode(i)
  14. }
  15. func (codec *GobCodec) Encode(i interface{}) (b []byte, err error) {
  16. writer := &bytes.Buffer{}
  17. if err = gob.NewEncoder(writer).Encode(i); err == nil {
  18. b = writer.Bytes()
  19. }
  20. return
  21. }
  22. func (codec *GobCodec) Decode(b []byte, i interface{}) (err error) {
  23. return gob.NewDecoder(bytes.NewReader(b)).Decode(i)
  24. }