1package quic 2 3import ( 4 "fmt" 5 6 "github.com/lucas-clemente/quic-go/internal/qerr" 7) 8 9type ( 10 TransportError = qerr.TransportError 11 ApplicationError = qerr.ApplicationError 12 VersionNegotiationError = qerr.VersionNegotiationError 13 StatelessResetError = qerr.StatelessResetError 14 IdleTimeoutError = qerr.IdleTimeoutError 15 HandshakeTimeoutError = qerr.HandshakeTimeoutError 16) 17 18type ( 19 TransportErrorCode = qerr.TransportErrorCode 20 ApplicationErrorCode = qerr.ApplicationErrorCode 21 StreamErrorCode = qerr.StreamErrorCode 22) 23 24const ( 25 NoError = qerr.NoError 26 InternalError = qerr.InternalError 27 ConnectionRefused = qerr.ConnectionRefused 28 FlowControlError = qerr.FlowControlError 29 StreamLimitError = qerr.StreamLimitError 30 StreamStateError = qerr.StreamStateError 31 FinalSizeError = qerr.FinalSizeError 32 FrameEncodingError = qerr.FrameEncodingError 33 TransportParameterError = qerr.TransportParameterError 34 ConnectionIDLimitError = qerr.ConnectionIDLimitError 35 ProtocolViolation = qerr.ProtocolViolation 36 InvalidToken = qerr.InvalidToken 37 ApplicationErrorErrorCode = qerr.ApplicationErrorErrorCode 38 CryptoBufferExceeded = qerr.CryptoBufferExceeded 39 KeyUpdateError = qerr.KeyUpdateError 40 AEADLimitReached = qerr.AEADLimitReached 41 NoViablePathError = qerr.NoViablePathError 42) 43 44// A StreamError is used for Stream.CancelRead and Stream.CancelWrite. 45// It is also returned from Stream.Read and Stream.Write if the peer canceled reading or writing. 46type StreamError struct { 47 StreamID StreamID 48 ErrorCode StreamErrorCode 49} 50 51func (e *StreamError) Is(target error) bool { 52 _, ok := target.(*StreamError) 53 return ok 54} 55 56func (e *StreamError) Error() string { 57 return fmt.Sprintf("stream %d canceled with error code %d", e.StreamID, e.ErrorCode) 58} 59