| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package quic
- import (
- "io"
- "github.com/lucas-clemente/quic-go/internal/flowcontrol"
- "github.com/lucas-clemente/quic-go/internal/protocol"
- "github.com/lucas-clemente/quic-go/internal/wire"
- )
- type cryptoStream interface {
- StreamID() protocol.StreamID
- io.Reader
- io.Writer
- handleStreamFrame(*wire.StreamFrame) error
- popStreamFrame(protocol.ByteCount) (*wire.StreamFrame, bool)
- closeForShutdown(error)
- setReadOffset(protocol.ByteCount)
- // methods needed for flow control
- getWindowUpdate() protocol.ByteCount
- handleMaxStreamDataFrame(*wire.MaxStreamDataFrame)
- }
- type cryptoStreamImpl struct {
- *stream
- }
- var _ cryptoStream = &cryptoStreamImpl{}
- func newCryptoStream(sender streamSender, flowController flowcontrol.StreamFlowController, version protocol.VersionNumber) cryptoStream {
- str := newStream(version.CryptoStreamID(), sender, flowController, version)
- return &cryptoStreamImpl{str}
- }
- // SetReadOffset sets the read offset.
- // It is only needed for the crypto stream.
- // It must not be called concurrently with any other stream methods, especially Read and Write.
- func (s *cryptoStreamImpl) setReadOffset(offset protocol.ByteCount) {
- s.receiveStream.readOffset = offset
- s.receiveStream.frameQueue.readPos = offset
- }
|