feat: add TypedMessageHandler + generic Decode[T] helper
- handler: add OnTypedMessage() for typed NATS message callbacks Avoids double-decode (msgpack→map→typed) by skipping map step - handler: refactor wrapHandler into wrapTypedHandler + wrapMapHandler - natsutil: add generic Decode[T](data) for direct msgpack→struct decode - tests: add typed handler tests + benchmark (11 tests pass)
This commit is contained in:
@@ -124,6 +124,14 @@ func DecodeMsgpack(msg *nats.Msg, dest any) error {
|
||||
return msgpack.Unmarshal(msg.Data, dest)
|
||||
}
|
||||
|
||||
// Decode is a generic helper that unmarshals msgpack bytes into T.
|
||||
// Usage: req, err := natsutil.Decode[messages.ChatRequest](msg.Data)
|
||||
func Decode[T any](data []byte) (T, error) {
|
||||
var v T
|
||||
err := msgpack.Unmarshal(data, &v)
|
||||
return v, err
|
||||
}
|
||||
|
||||
// DecodeMsgpackMap decodes msgpack data into a generic map.
|
||||
func DecodeMsgpackMap(data []byte) (map[string]any, error) {
|
||||
var m map[string]any
|
||||
|
||||
Reference in New Issue
Block a user