Files
mq/codec/serializer.go
2024-10-14 22:21:53 +05:45

38 lines
746 B
Go

package codec
import (
"encoding/json"
)
type MarshallerFunc func(v any) ([]byte, error)
type UnmarshallerFunc func(data []byte, v any) error
func (f MarshallerFunc) Marshal(v any) ([]byte, error) {
return f(v)
}
func (f UnmarshallerFunc) Unmarshal(data []byte, v any) error {
return f(data, v)
}
var defaultMarshaller MarshallerFunc = json.Marshal
var defaultUnmarshaller UnmarshallerFunc = json.Unmarshal
func SetMarshaller(marshaller MarshallerFunc) {
defaultMarshaller = marshaller
}
func SetUnmarshaller(unmarshaller UnmarshallerFunc) {
defaultUnmarshaller = unmarshaller
}
func Marshal(v any) ([]byte, error) {
return defaultMarshaller(v)
}
func Unmarshal(data []byte, v any) error {
return defaultUnmarshaller(data, v)
}