Dawid Wysokiński
81358b22e8
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: twhelp/core#13
29 lines
654 B
Go
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
|
|
}
|