Compare commits
4 Commits
e4f13a4142
...
945d81c505
Author | SHA1 | Date | |
---|---|---|---|
945d81c505 | |||
f34620c434 | |||
7a766b74d8 | |||
6de3cbbc48 |
16
metadapta.go
16
metadapta.go
@ -17,7 +17,7 @@ type Party bool; const (
|
||||
)
|
||||
|
||||
type a struct {
|
||||
sizeLimit int
|
||||
sizeLimit int64
|
||||
underlying net.Conn
|
||||
party Party
|
||||
transID int64
|
||||
@ -88,7 +88,7 @@ func (this *a) AcceptTrans() (Trans, error) {
|
||||
}
|
||||
}
|
||||
|
||||
func (this *a) SetSizeLimit(limit int) {
|
||||
func (this *a) SetSizeLimit(limit int64) {
|
||||
this.sizeLimit = limit
|
||||
}
|
||||
|
||||
@ -277,18 +277,18 @@ func encodeMessageA(writer io.Writer, trans int64, method uint16, data []byte) e
|
||||
return err
|
||||
}
|
||||
|
||||
func decodeMessageA(reader io.Reader) (int64, uint16, bool, []byte, error) {
|
||||
func decodeMessageA(reader io.Reader) (transID int64, method uint16, chunked bool, payloadBuffer []byte, err error) {
|
||||
headerBuffer := [18]byte { }
|
||||
_, err := io.ReadFull(reader, headerBuffer[:])
|
||||
_, err = io.ReadFull(reader, headerBuffer[:])
|
||||
if err != nil { return 0, 0, false, nil, err }
|
||||
transID, err := tape.DecodeI64[int64](headerBuffer[:8])
|
||||
transID, err = tape.DecodeI64[int64](headerBuffer[:8])
|
||||
if err != nil { return 0, 0, false, nil, err }
|
||||
method, err := tape.DecodeI16[uint16](headerBuffer[8:10])
|
||||
method, err = tape.DecodeI16[uint16](headerBuffer[8:10])
|
||||
if err != nil { return 0, 0, false, nil, err }
|
||||
size, err := tape.DecodeI64[uint64](headerBuffer[10:18])
|
||||
if err != nil { return 0, 0, false, nil, err }
|
||||
chunked, size := splitCCBSize(size)
|
||||
payloadBuffer := make([]byte, int(size))
|
||||
chunked, size = splitCCBSize(size)
|
||||
payloadBuffer = make([]byte, int(size))
|
||||
_, err = io.ReadFull(reader, payloadBuffer)
|
||||
if err != nil { return 0, 0, false, nil, err }
|
||||
return transID, method, chunked, payloadBuffer, nil
|
||||
|
@ -108,7 +108,7 @@ func TestEncodeMessageAErr(test *testing.T) {
|
||||
}
|
||||
|
||||
func TestDecodeMessageA(test *testing.T) {
|
||||
transID, method, payload, err := decodeMessageA(bytes.NewReader([]byte {
|
||||
transID, method, _, payload, err := decodeMessageA(bytes.NewReader([]byte {
|
||||
0x58, 0x00, 0xFE, 0xAB, 0xC3, 0x10, 0x4F, 0x04,
|
||||
0x6B, 0x12,
|
||||
0x00, 0x06,
|
||||
@ -130,7 +130,7 @@ func TestDecodeMessageA(test *testing.T) {
|
||||
}
|
||||
|
||||
func TestDecodeMessageAErr(test *testing.T) {
|
||||
_, _, _, err := decodeMessageA(bytes.NewReader([]byte {
|
||||
_, _, _, _, err := decodeMessageA(bytes.NewReader([]byte {
|
||||
0x58, 0x00, 0xFE, 0xAB, 0xC3, 0x10, 0x4F, 0x04,
|
||||
0x6B, 0x12,
|
||||
0x01, 0x06,
|
||||
|
@ -33,7 +33,7 @@ func TestEncodeMessageBErr(test *testing.T) {
|
||||
}
|
||||
|
||||
func TestDecodeMessageB(test *testing.T) {
|
||||
method, payload, err := decodeMessageB(bytes.NewReader([]byte {
|
||||
method, _, data, err := decodeMessageB(bytes.NewReader([]byte {
|
||||
0x6B, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x06,
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
|
||||
@ -44,6 +44,7 @@ func TestDecodeMessageB(test *testing.T) {
|
||||
if got, correct := method, uint16(0x6B12); got != correct {
|
||||
test.Fatalf("not equal: %v %v", got, correct)
|
||||
}
|
||||
payload, _ := io.ReadAll(data)
|
||||
correctPayload := []byte { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 }
|
||||
if got, correct := payload, correctPayload; !slices.Equal(got, correct) {
|
||||
test.Fatalf("not equal: %v %v", got, correct)
|
||||
@ -51,7 +52,7 @@ func TestDecodeMessageB(test *testing.T) {
|
||||
}
|
||||
|
||||
func TestDecodeMessageBErr(test *testing.T) {
|
||||
_, _, err := decodeMessageB(bytes.NewReader([]byte {
|
||||
_, _, _, err := decodeMessageB(bytes.NewReader([]byte {
|
||||
0x6B, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x06,
|
||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
|
||||
|
Loading…
Reference in New Issue
Block a user