This repository has been archived on 2024-04-06. You can view files and clone it, but cannot push or open issues or pull requests.
core-old/internal/msg/marshaler_gob.go
2022-07-30 13:16:44 +00:00

29 lines
654 B
Go

package msg
import (
"bytes"
"encoding/gob"
"fmt"
"github.com/ThreeDotsLabs/watermill"
"github.com/ThreeDotsLabs/watermill/message"
)
type GobMarshaler struct{}
func (m GobMarshaler) Marshal(v any) (*message.Message, error) {
var buf bytes.Buffer
if err := gob.NewEncoder(&buf).Encode(v); err != nil {
return nil, fmt.Errorf("gob.Encode: %w", err)
}
return message.NewMessage(watermill.NewUUID(), buf.Bytes()), nil
}
func (m GobMarshaler) Unmarshal(msg *message.Message, v any) error {
buf := bytes.NewReader(msg.Payload)
if err := gob.NewDecoder(buf).Decode(v); err != nil {
return fmt.Errorf("gob.Decode: %w", err)
}
return nil
}