1234567891011121314151617181920212223242526272829303132333435363738 |
- package codec
-
- import "fmt"
-
- const (
- JSON = "text/json"
- PROTOBUF = "text/protobuf"
- String = "text/string"
- XML = "text/xml"
- )
-
- type Coder interface {
- Encoder(data interface{}) ([]byte, error)
- Decoder(data []byte, v interface{}) error
- }
-
- var adapters = make(map[string]Coder)
-
- func Register(name string, adapter Coder) {
- if adapter == nil {
- panic("codec: register adapter is nil")
- }
-
- if _, ok := adapters["name"]; ok {
- panic("codec: register called twice for adapter " + name)
- }
-
- adapters[name] = adapter
- }
-
- func NewCoder(adapterName string) (Coder, error) {
- if v, ok := adapters[adapterName]; ok {
- return v, nil
- }
-
- return nil, fmt.Errorf("codec: unknown adapter name %q (forgot to import?)", adapterName)
- }
|