Initial Commit
This commit is contained in:
59
codec/codec.go
Normal file
59
codec/codec.go
Normal file
@@ -0,0 +1,59 @@
|
||||
package codec
|
||||
|
||||
import (
|
||||
"encoding/gob"
|
||||
"encoding/json"
|
||||
"io"
|
||||
|
||||
"github.com/vmihailenco/msgpack/v5"
|
||||
)
|
||||
|
||||
// CodecFunc is a function that returns a new Codec
|
||||
// bound to the given io.ReadWriter
|
||||
type CodecFunc func(io.ReadWriter) Codec
|
||||
|
||||
// Codec is able to encode and decode messages to/from
|
||||
// the given io.ReadWriter
|
||||
type Codec interface {
|
||||
Encode(val any) error
|
||||
Decode(val any) error
|
||||
}
|
||||
|
||||
// Default is the default CodecFunc
|
||||
var Default = Msgpack
|
||||
|
||||
// JSON is a CodecFunc that creates a JSON Codec
|
||||
func JSON(rw io.ReadWriter) Codec {
|
||||
type jsonCodec struct {
|
||||
*json.Encoder
|
||||
*json.Decoder
|
||||
}
|
||||
return jsonCodec{
|
||||
Encoder: json.NewEncoder(rw),
|
||||
Decoder: json.NewDecoder(rw),
|
||||
}
|
||||
}
|
||||
|
||||
// Msgpack is a CodecFunc that creates a Msgpack Codec
|
||||
func Msgpack(rw io.ReadWriter) Codec {
|
||||
type msgpackCodec struct {
|
||||
*msgpack.Encoder
|
||||
*msgpack.Decoder
|
||||
}
|
||||
return msgpackCodec{
|
||||
Encoder: msgpack.NewEncoder(rw),
|
||||
Decoder: msgpack.NewDecoder(rw),
|
||||
}
|
||||
}
|
||||
|
||||
// Gob is a CodecFunc that creates a Gob Codec
|
||||
func Gob(rw io.ReadWriter) Codec {
|
||||
type gobCodec struct {
|
||||
*gob.Encoder
|
||||
*gob.Decoder
|
||||
}
|
||||
return gobCodec{
|
||||
Encoder: gob.NewEncoder(rw),
|
||||
Decoder: gob.NewDecoder(rw),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user