add support of the byte array with varint len.
This commit is contained in:
@ -377,8 +377,8 @@ func (c *Client) encryptionResponse() ([]byte, []byte, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
SharedSecret ByteArray
|
SharedSecret pk.ByteArray
|
||||||
VerifyToken ByteArray
|
VerifyToken pk.ByteArray
|
||||||
)
|
)
|
||||||
if err := p.Scan(&SharedSecret, &VerifyToken); err != nil {
|
if err := p.Scan(&SharedSecret, &VerifyToken); err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
@ -386,20 +386,6 @@ func (c *Client) encryptionResponse() ([]byte, []byte, error) {
|
|||||||
return SharedSecret, VerifyToken, nil
|
return SharedSecret, VerifyToken, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//ByteArray is []byte with perfix VarInt as length
|
|
||||||
type ByteArray []byte
|
|
||||||
|
|
||||||
// Decode a ByteArray
|
|
||||||
func (b *ByteArray) Decode(r pk.DecodeReader) error {
|
|
||||||
var Len pk.VarInt
|
|
||||||
if err := Len.Decode(r); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
*b = make([]byte, Len)
|
|
||||||
_, err := r.Read(*b)
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
type authResp struct {
|
type authResp struct {
|
||||||
ID, Name string
|
ID, Name string
|
||||||
Properties [1]struct {
|
Properties [1]struct {
|
||||||
|
@ -19,7 +19,7 @@ var PackedVarInts = [][]byte{
|
|||||||
[]byte{0x80, 0x80, 0x80, 0x80, 0x08},
|
[]byte{0x80, 0x80, 0x80, 0x80, 0x08},
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPackInt(t *testing.T) {
|
func TestPackVarInt(t *testing.T) {
|
||||||
for i, v := range VarInts {
|
for i, v := range VarInts {
|
||||||
p := v.Encode()
|
p := v.Encode()
|
||||||
if !bytes.Equal(p, PackedVarInts[i]) {
|
if !bytes.Equal(p, PackedVarInts[i]) {
|
||||||
@ -27,7 +27,7 @@ func TestPackInt(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func TestUnpackInt(t *testing.T) {
|
func TestUnpackVarInt(t *testing.T) {
|
||||||
for i, v := range PackedVarInts {
|
for i, v := range PackedVarInts {
|
||||||
var vi VarInt
|
var vi VarInt
|
||||||
if err := vi.Decode(bytes.NewReader(v)); err != nil {
|
if err := vi.Decode(bytes.NewReader(v)); err != nil {
|
||||||
|
@ -76,6 +76,9 @@ type (
|
|||||||
NBT struct {
|
NBT struct {
|
||||||
V interface{}
|
V interface{}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//ByteArray is []byte with perfix VarInt as length
|
||||||
|
ByteArray []byte
|
||||||
)
|
)
|
||||||
|
|
||||||
//ReadNBytes read N bytes from bytes.Reader
|
//ReadNBytes read N bytes from bytes.Reader
|
||||||
@ -354,3 +357,19 @@ func (d *Double) Decode(r DecodeReader) error {
|
|||||||
func (n NBT) Decode(r DecodeReader) error {
|
func (n NBT) Decode(r DecodeReader) error {
|
||||||
return nbt.NewDecoder(r).Decode(n.V)
|
return nbt.NewDecoder(r).Decode(n.V)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Encode a ByteArray
|
||||||
|
func (b *ByteArray) Encode() []byte {
|
||||||
|
return append(VarInt(len(*b)).Encode(), *b...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Decode a ByteArray
|
||||||
|
func (b *ByteArray) Decode(r DecodeReader) error {
|
||||||
|
var Len VarInt
|
||||||
|
if err := Len.Decode(r); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*b = make([]byte, Len)
|
||||||
|
_, err := r.Read(*b)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user