Compare commits

...

4 Commits

3 changed files with 13 additions and 12 deletions

View File

@ -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

View File

@ -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,

View File

@ -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,