|
@@ -79,7 +79,7 @@ func (v *DataSegment) Bytes() buf.Supplier {
|
|
|
b = serial.Uint32ToBytes(v.SendingNext, b)
|
|
b = serial.Uint32ToBytes(v.SendingNext, b)
|
|
|
b = serial.Uint16ToBytes(uint16(v.Data.Len()), b)
|
|
b = serial.Uint16ToBytes(uint16(v.Data.Len()), b)
|
|
|
b = append(b, v.Data.Bytes()...)
|
|
b = append(b, v.Data.Bytes()...)
|
|
|
- return v.ByteSize(), nil
|
|
|
|
|
|
|
+ return len(b), nil
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -98,7 +98,6 @@ type AckSegment struct {
|
|
|
ReceivingWindow uint32
|
|
ReceivingWindow uint32
|
|
|
ReceivingNext uint32
|
|
ReceivingNext uint32
|
|
|
Timestamp uint32
|
|
Timestamp uint32
|
|
|
- Count byte
|
|
|
|
|
NumberList []uint32
|
|
NumberList []uint32
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -125,16 +124,19 @@ func (v *AckSegment) PutTimestamp(timestamp uint32) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (v *AckSegment) PutNumber(number uint32) {
|
|
func (v *AckSegment) PutNumber(number uint32) {
|
|
|
- v.Count++
|
|
|
|
|
v.NumberList = append(v.NumberList, number)
|
|
v.NumberList = append(v.NumberList, number)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (v *AckSegment) IsFull() bool {
|
|
func (v *AckSegment) IsFull() bool {
|
|
|
- return v.Count == ackNumberLimit
|
|
|
|
|
|
|
+ return len(v.NumberList) == ackNumberLimit
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (v *AckSegment) IsEmpty() bool {
|
|
|
|
|
+ return len(v.NumberList) == 0
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (v *AckSegment) ByteSize() int {
|
|
func (v *AckSegment) ByteSize() int {
|
|
|
- return 2 + 1 + 1 + 4 + 4 + 4 + 1 + int(v.Count)*4
|
|
|
|
|
|
|
+ return 2 + 1 + 1 + 4 + 4 + 4 + 1 + len(v.NumberList)*4
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
func (v *AckSegment) Bytes() buf.Supplier {
|
|
func (v *AckSegment) Bytes() buf.Supplier {
|
|
@@ -144,9 +146,10 @@ func (v *AckSegment) Bytes() buf.Supplier {
|
|
|
b = serial.Uint32ToBytes(v.ReceivingWindow, b)
|
|
b = serial.Uint32ToBytes(v.ReceivingWindow, b)
|
|
|
b = serial.Uint32ToBytes(v.ReceivingNext, b)
|
|
b = serial.Uint32ToBytes(v.ReceivingNext, b)
|
|
|
b = serial.Uint32ToBytes(v.Timestamp, b)
|
|
b = serial.Uint32ToBytes(v.Timestamp, b)
|
|
|
- b = append(b, v.Count)
|
|
|
|
|
- for i := byte(0); i < v.Count; i++ {
|
|
|
|
|
- b = serial.Uint32ToBytes(v.NumberList[i], b)
|
|
|
|
|
|
|
+ count := byte(len(v.NumberList))
|
|
|
|
|
+ b = append(b, count)
|
|
|
|
|
+ for _, number := range v.NumberList {
|
|
|
|
|
+ b = serial.Uint32ToBytes(number, b)
|
|
|
}
|
|
}
|
|
|
return v.ByteSize(), nil
|
|
return v.ByteSize(), nil
|
|
|
}
|
|
}
|
|
@@ -188,7 +191,7 @@ func (v *CmdOnlySegment) Bytes() buf.Supplier {
|
|
|
b = serial.Uint32ToBytes(v.SendingNext, b)
|
|
b = serial.Uint32ToBytes(v.SendingNext, b)
|
|
|
b = serial.Uint32ToBytes(v.ReceivinNext, b)
|
|
b = serial.Uint32ToBytes(v.ReceivinNext, b)
|
|
|
b = serial.Uint32ToBytes(v.PeerRTO, b)
|
|
b = serial.Uint32ToBytes(v.PeerRTO, b)
|
|
|
- return v.ByteSize(), nil
|
|
|
|
|
|
|
+ return len(b), nil
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|