Selaa lähdekoodia

Get rid of size and adjusted fields in varintLengthField

Vlad Hanciuta 8 vuotta sitten
vanhempi
commit
4a9a2bcc47
1 muutettua tiedostoa jossa 5 lisäystä ja 15 poistoa
  1. 5 15
      length_field.go

+ 5 - 15
length_field.go

@@ -31,8 +31,6 @@ func (l *lengthField) check(curOffset int, buf []byte) error {
 type varintLengthField struct {
 	startOffset int
 	length      int64
-	adjusted    bool
-	size        int
 }
 
 func (l *varintLengthField) decode(pd packetDecoder) error {
@@ -46,26 +44,18 @@ func (l *varintLengthField) saveOffset(in int) {
 }
 
 func (l *varintLengthField) adjustLength(currOffset int) int {
-	l.adjusted = true
+	oldFieldSize := l.reserveLength()
+	l.length = int64(currOffset - l.startOffset - oldFieldSize)
 
-	var tmp [binary.MaxVarintLen64]byte
-	l.length = int64(currOffset - l.startOffset - l.size)
-
-	newSize := binary.PutVarint(tmp[:], l.length)
-	diff := newSize - l.size
-	l.size = newSize
-
-	return diff
+	return l.reserveLength() - oldFieldSize
 }
 
 func (l *varintLengthField) reserveLength() int {
-	return l.size
+	var tmp [binary.MaxVarintLen64]byte
+	return binary.PutVarint(tmp[:], l.length)
 }
 
 func (l *varintLengthField) run(curOffset int, buf []byte) error {
-	if !l.adjusted {
-		return PacketEncodingError{"varintLengthField.run called before adjustLength"}
-	}
 	binary.PutVarint(buf[l.startOffset:], l.length)
 	return nil
 }