Bumps [github.com/shamaton/msgpack/v2](https://github.com/shamaton/msgpack) from 2.1.1 to 2.2.0. - [Release notes](https://github.com/shamaton/msgpack/releases) - [Commits](https://github.com/shamaton/msgpack/compare/v2.1.1...v2.2.0) --- updated-dependencies: - dependency-name: github.com/shamaton/msgpack/v2 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com>
61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
package ext
|
|
|
|
import (
|
|
"github.com/shamaton/msgpack/v2/internal/common"
|
|
"io"
|
|
"reflect"
|
|
)
|
|
|
|
var emptyBytes []byte
|
|
|
|
type StreamDecoder interface {
|
|
Code() int8
|
|
IsType(code byte, innerType int8, dataLength int) bool
|
|
ToValue(code byte, data []byte, k reflect.Kind) (any, error)
|
|
}
|
|
|
|
type DecoderStreamCommon struct {
|
|
}
|
|
|
|
func (d *DecoderStreamCommon) ReadSize1(r io.Reader, buf *common.Buffer) (byte, error) {
|
|
if _, err := r.Read(buf.B1); err != nil {
|
|
return 0, err
|
|
}
|
|
return buf.B1[0], nil
|
|
}
|
|
|
|
func (d *DecoderStreamCommon) ReadSize2(r io.Reader, buf *common.Buffer) ([]byte, error) {
|
|
if _, err := r.Read(buf.B2); err != nil {
|
|
return emptyBytes, err
|
|
}
|
|
return buf.B2, nil
|
|
}
|
|
|
|
func (d *DecoderStreamCommon) ReadSize4(r io.Reader, buf *common.Buffer) ([]byte, error) {
|
|
if _, err := r.Read(buf.B4); err != nil {
|
|
return emptyBytes, err
|
|
}
|
|
return buf.B4, nil
|
|
}
|
|
|
|
func (d *DecoderStreamCommon) ReadSize8(r io.Reader, buf *common.Buffer) ([]byte, error) {
|
|
if _, err := r.Read(buf.B8); err != nil {
|
|
return emptyBytes, err
|
|
}
|
|
return buf.B8, nil
|
|
}
|
|
|
|
func (d *DecoderStreamCommon) ReadSizeN(r io.Reader, buf *common.Buffer, n int) ([]byte, error) {
|
|
var b []byte
|
|
if len(buf.Data) <= n {
|
|
b = buf.Data[:n]
|
|
} else {
|
|
buf.Data = append(buf.Data, make([]byte, n-len(buf.Data))...)
|
|
b = buf.Data
|
|
}
|
|
if _, err := r.Read(b); err != nil {
|
|
return emptyBytes, err
|
|
}
|
|
return b, nil
|
|
}
|