gob_codec.go 622 B

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