matterbridge/vendor/github.com/philippgille/gokv/encoding/gob.go
Yousef Mansy c0f5d0c5f7 Add persistent message map
Resolves #541
2023-03-01 01:39:23 -08:00

29 lines
672 B
Go

package encoding
import (
"bytes"
"encoding/gob"
)
// GobCodec encodes/decodes Go values to/from gob.
// You can use encoding.Gob instead of creating an instance of this struct.
type GobCodec struct{}
// Marshal encodes a Go value to gob.
func (c GobCodec) Marshal(v interface{}) ([]byte, error) {
buffer := new(bytes.Buffer)
encoder := gob.NewEncoder(buffer)
err := encoder.Encode(v)
if err != nil {
return nil, err
}
return buffer.Bytes(), nil
}
// Unmarshal decodes a gob value into a Go value.
func (c GobCodec) Unmarshal(data []byte, v interface{}) error {
reader := bytes.NewReader(data)
decoder := gob.NewDecoder(reader)
return decoder.Decode(v)
}