base-golang/pkg/websocket/codec/codec.go

27 lines
550 B
Go
Raw Normal View History

2024-07-23 10:23:43 +08:00
package codec
type Codec interface {
Marshal(router string, dataPtr any, err error) ([]byte, error)
Unmarshal([]byte) (int, *MsgPack, error)
ToString(any) string
}
var codecsList = make(map[string]Codec)
func RegisterCodec(name string, codec Codec) {
if codec == nil {
panic("codec: Register provide is nil")
}
if _, dup := codecsList[name]; dup {
panic("codec: Register called twice for provide " + name)
}
codecsList[name] = codec
}
func GetCodec(name string) Codec {
if v, ok := codecsList[name]; ok {
return v
}
return nil
}