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 {
|
type a struct {
|
||||||
sizeLimit int
|
sizeLimit int64
|
||||||
underlying net.Conn
|
underlying net.Conn
|
||||||
party Party
|
party Party
|
||||||
transID int64
|
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
|
this.sizeLimit = limit
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,18 +277,18 @@ func encodeMessageA(writer io.Writer, trans int64, method uint16, data []byte) e
|
|||||||
return err
|
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 { }
|
headerBuffer := [18]byte { }
|
||||||
_, err := io.ReadFull(reader, headerBuffer[:])
|
_, err = io.ReadFull(reader, headerBuffer[:])
|
||||||
if err != nil { return 0, 0, false, nil, err }
|
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 }
|
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 }
|
if err != nil { return 0, 0, false, nil, err }
|
||||||
size, err := tape.DecodeI64[uint64](headerBuffer[10:18])
|
size, err := tape.DecodeI64[uint64](headerBuffer[10:18])
|
||||||
if err != nil { return 0, 0, false, nil, err }
|
if err != nil { return 0, 0, false, nil, err }
|
||||||
chunked, size := splitCCBSize(size)
|
chunked, size = splitCCBSize(size)
|
||||||
payloadBuffer := make([]byte, int(size))
|
payloadBuffer = make([]byte, int(size))
|
||||||
_, err = io.ReadFull(reader, payloadBuffer)
|
_, err = io.ReadFull(reader, payloadBuffer)
|
||||||
if err != nil { return 0, 0, false, nil, err }
|
if err != nil { return 0, 0, false, nil, err }
|
||||||
return transID, method, chunked, payloadBuffer, nil
|
return transID, method, chunked, payloadBuffer, nil
|
||||||
|
@ -108,7 +108,7 @@ func TestEncodeMessageAErr(test *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDecodeMessageA(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,
|
0x58, 0x00, 0xFE, 0xAB, 0xC3, 0x10, 0x4F, 0x04,
|
||||||
0x6B, 0x12,
|
0x6B, 0x12,
|
||||||
0x00, 0x06,
|
0x00, 0x06,
|
||||||
@ -130,7 +130,7 @@ func TestDecodeMessageA(test *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDecodeMessageAErr(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,
|
0x58, 0x00, 0xFE, 0xAB, 0xC3, 0x10, 0x4F, 0x04,
|
||||||
0x6B, 0x12,
|
0x6B, 0x12,
|
||||||
0x01, 0x06,
|
0x01, 0x06,
|
||||||
|
@ -33,7 +33,7 @@ func TestEncodeMessageBErr(test *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDecodeMessageB(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,
|
0x6B, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x06,
|
0x00, 0x06,
|
||||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
|
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
|
||||||
@ -44,6 +44,7 @@ func TestDecodeMessageB(test *testing.T) {
|
|||||||
if got, correct := method, uint16(0x6B12); got != correct {
|
if got, correct := method, uint16(0x6B12); got != correct {
|
||||||
test.Fatalf("not equal: %v %v", got, correct)
|
test.Fatalf("not equal: %v %v", got, correct)
|
||||||
}
|
}
|
||||||
|
payload, _ := io.ReadAll(data)
|
||||||
correctPayload := []byte { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 }
|
correctPayload := []byte { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05 }
|
||||||
if got, correct := payload, correctPayload; !slices.Equal(got, correct) {
|
if got, correct := payload, correctPayload; !slices.Equal(got, correct) {
|
||||||
test.Fatalf("not equal: %v %v", got, correct)
|
test.Fatalf("not equal: %v %v", got, correct)
|
||||||
@ -51,7 +52,7 @@ func TestDecodeMessageB(test *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDecodeMessageBErr(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,
|
0x6B, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x01, 0x06,
|
0x01, 0x06,
|
||||||
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
|
0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
|
||||||
|
Loading…
Reference in New Issue
Block a user