mirror of
https://github.com/refraction-networking/uquic.git
synced 2025-04-05 05:07:36 +03:00
uTLS is not yet bumped to the new version, so this commit breaks the dependencies relationship by getting rid of the local replace.
44 lines
1.2 KiB
Go
44 lines
1.2 KiB
Go
package wire
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/refraction-networking/uquic/internal/protocol"
|
|
"github.com/refraction-networking/uquic/internal/qerr"
|
|
"github.com/refraction-networking/uquic/quicvarint"
|
|
)
|
|
|
|
// A StopSendingFrame is a STOP_SENDING frame
|
|
type StopSendingFrame struct {
|
|
StreamID protocol.StreamID
|
|
ErrorCode qerr.StreamErrorCode
|
|
}
|
|
|
|
// parseStopSendingFrame parses a STOP_SENDING frame
|
|
func parseStopSendingFrame(r *bytes.Reader, _ protocol.VersionNumber) (*StopSendingFrame, error) {
|
|
streamID, err := quicvarint.Read(r)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
errorCode, err := quicvarint.Read(r)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &StopSendingFrame{
|
|
StreamID: protocol.StreamID(streamID),
|
|
ErrorCode: qerr.StreamErrorCode(errorCode),
|
|
}, nil
|
|
}
|
|
|
|
// Length of a written frame
|
|
func (f *StopSendingFrame) Length(_ protocol.VersionNumber) protocol.ByteCount {
|
|
return 1 + quicvarint.Len(uint64(f.StreamID)) + quicvarint.Len(uint64(f.ErrorCode))
|
|
}
|
|
|
|
func (f *StopSendingFrame) Append(b []byte, _ protocol.VersionNumber) ([]byte, error) {
|
|
b = append(b, stopSendingFrameType)
|
|
b = quicvarint.Append(b, uint64(f.StreamID))
|
|
b = quicvarint.Append(b, uint64(f.ErrorCode))
|
|
return b, nil
|
|
}
|