use protocol.ByteCount in frames, streams and session

This commit is contained in:
Marten Seemann
2016-05-05 11:53:10 +07:00
parent 77f34a9207
commit 6556e2f695
11 changed files with 42 additions and 33 deletions

View File

@@ -10,7 +10,7 @@ import (
// A RstStreamFrame in QUIC
type RstStreamFrame struct {
StreamID protocol.StreamID
ByteOffset uint64
ByteOffset protocol.ByteCount
ErrorCode uint32
}
@@ -40,10 +40,11 @@ func ParseRstStreamFrame(r *bytes.Reader) (*RstStreamFrame, error) {
}
frame.StreamID = protocol.StreamID(sid)
frame.ByteOffset, err = utils.ReadUint64(r)
byteOffset, err := utils.ReadUint64(r)
if err != nil {
return nil, err
}
frame.ByteOffset = protocol.ByteCount(byteOffset)
frame.ErrorCode, err = utils.ReadUint32(r)
if err != nil {

View File

@@ -16,7 +16,7 @@ var _ = Describe("RstStreamFrame", func() {
frame, err := ParseRstStreamFrame(b)
Expect(err).ToNot(HaveOccurred())
Expect(frame.StreamID).To(Equal(protocol.StreamID(0xDEADBEEF)))
Expect(frame.ByteOffset).To(Equal(uint64(0xDECAFBAD11223344)))
Expect(frame.ByteOffset).To(Equal(protocol.ByteCount(0xDECAFBAD11223344)))
Expect(frame.ErrorCode).To(Equal(uint32(0x13371234)))
})
})

View File

@@ -12,7 +12,7 @@ import (
type StreamFrame struct {
FinBit bool
StreamID protocol.StreamID
Offset uint64
Offset protocol.ByteCount
Data []byte
}
@@ -39,10 +39,11 @@ func ParseStreamFrame(r *bytes.Reader) (*StreamFrame, error) {
}
frame.StreamID = protocol.StreamID(sid)
frame.Offset, err = utils.ReadUintN(r, offsetLen)
offset, err := utils.ReadUintN(r, offsetLen)
if err != nil {
return nil, err
}
frame.Offset = protocol.ByteCount(offset)
var dataLen uint16
if dataLenPresent {
@@ -82,7 +83,7 @@ func (f *StreamFrame) Write(b *bytes.Buffer, packetNumber protocol.PacketNumber,
b.WriteByte(typeByte)
utils.WriteUint32(b, uint32(f.StreamID))
if f.Offset != 0 {
utils.WriteUint64(b, f.Offset)
utils.WriteUint64(b, uint64(f.Offset))
}
utils.WriteUint16(b, uint16(len(f.Data)))
b.Write(f.Data)
@@ -103,7 +104,7 @@ func (f *StreamFrame) MaybeSplitOffFrame(n int) *StreamFrame {
defer func() {
f.Data = f.Data[n:]
f.Offset += uint64(n)
f.Offset += protocol.ByteCount(n)
}()
return &StreamFrame{

View File

@@ -71,7 +71,7 @@ var _ = Describe("StreamFrame", func() {
Offset: 3,
}
Expect(f.MaybeSplitOffFrame(1000)).To(BeNil())
Expect(f.Offset).To(Equal(uint64(3)))
Expect(f.Offset).To(Equal(protocol.ByteCount(3)))
})
It("splits off initial frame", func() {
@@ -85,11 +85,11 @@ var _ = Describe("StreamFrame", func() {
Expect(previous).ToNot(BeNil())
Expect(previous.StreamID).To(Equal(protocol.StreamID(1)))
Expect(previous.Data).To(Equal([]byte("foo")))
Expect(previous.Offset).To(Equal(uint64(3)))
Expect(previous.Offset).To(Equal(protocol.ByteCount(3)))
Expect(previous.FinBit).To(BeFalse())
Expect(f.StreamID).To(Equal(protocol.StreamID(1)))
Expect(f.Data).To(Equal([]byte("bar")))
Expect(f.Offset).To(Equal(uint64(6)))
Expect(f.Offset).To(Equal(protocol.ByteCount(6)))
Expect(f.FinBit).To(BeTrue())
})
})

View File

@@ -10,7 +10,7 @@ import (
// A WindowUpdateFrame in QUIC
type WindowUpdateFrame struct {
StreamID protocol.StreamID
ByteOffset uint64
ByteOffset protocol.ByteCount
}
//Write writes a RST_STREAM frame
@@ -39,10 +39,11 @@ func ParseWindowUpdateFrame(r *bytes.Reader) (*WindowUpdateFrame, error) {
}
frame.StreamID = protocol.StreamID(sid)
frame.ByteOffset, err = utils.ReadUint64(r)
byteOffset, err := utils.ReadUint64(r)
if err != nil {
return nil, err
}
frame.ByteOffset = protocol.ByteCount(byteOffset)
return frame, nil
}

View File

@@ -16,7 +16,7 @@ var _ = Describe("WindowUpdateFrame", func() {
frame, err := ParseWindowUpdateFrame(b)
Expect(err).ToNot(HaveOccurred())
Expect(frame.StreamID).To(Equal(protocol.StreamID(0xDEADBEEF)))
Expect(frame.ByteOffset).To(Equal(uint64(0xDECAFBAD11223344)))
Expect(frame.ByteOffset).To(Equal(protocol.ByteCount(0xDECAFBAD11223344)))
Expect(b.Len()).To(Equal(0))
})
})