diff --git a/api/message/codec_manager.go b/api/message/codec_manager.go new file mode 100644 index 0000000..3104e0d --- /dev/null +++ b/api/message/codec_manager.go @@ -0,0 +1,18 @@ +package message + +import "fmt" + +var registry = map[string]Codec{} + +func RegisterCodec(name string, codec Codec) { + registry[name] = codec +} + +func GetCodec(name string) (Codec, error) { + var err error + codec, ok := registry[name] + if !ok { + err = fmt.Errorf("no codec registered with name '%s'", name) + } + return codec, err +}