add error code string representation to QuicError.Error

This commit is contained in:
Lucas Clemente 2016-05-17 00:31:18 +02:00
parent 69e302812d
commit dc2a14a5f7
5 changed files with 60 additions and 2 deletions

View file

@ -6,6 +6,8 @@ package errorcodes
type ErrorCode uint32
// The error codes defined by QUIC
// Remeber to run go generate ./... whenever the error codes change.
//go:generate stringer -type=ErrorCode
const (
InternalError ErrorCode = 1
InvalidFrameData ErrorCode = 4

View file

@ -0,0 +1,38 @@
// Code generated by "stringer -type=ErrorCode"; DO NOT EDIT
package errorcodes
import "fmt"
const (
_ErrorCode_name_0 = "InternalError"
_ErrorCode_name_1 = "InvalidFrameData"
_ErrorCode_name_2 = "DecryptionFailure"
_ErrorCode_name_3 = "PeerGoingAway"
_ErrorCode_name_4 = "NetworkIdleTimeout"
)
var (
_ErrorCode_index_0 = [...]uint8{0, 13}
_ErrorCode_index_1 = [...]uint8{0, 16}
_ErrorCode_index_2 = [...]uint8{0, 17}
_ErrorCode_index_3 = [...]uint8{0, 13}
_ErrorCode_index_4 = [...]uint8{0, 18}
)
func (i ErrorCode) String() string {
switch {
case i == 1:
return _ErrorCode_name_0
case i == 4:
return _ErrorCode_name_1
case i == 12:
return _ErrorCode_name_2
case i == 16:
return _ErrorCode_name_3
case i == 25:
return _ErrorCode_name_4
default:
return fmt.Sprintf("ErrorCode(%d)", i)
}
}

View file

@ -163,6 +163,6 @@ var _ = Describe("Packet unpacker", func() {
It("errors on invalid type", func() {
setReader([]byte{0x08})
_, err := unpacker.Unpack(hdrBin, hdr, r)
Expect(err).To(MatchError("unknown type byte 0x8"))
Expect(err).To(MatchError("InvalidFrameData: unknown type byte 0x8"))
})
})

View file

@ -1,6 +1,8 @@
package protocol
import (
"fmt"
"github.com/lucas-clemente/quic-go/errorcodes"
)
@ -19,7 +21,7 @@ func Error(errorCode errorcodes.ErrorCode, errorMessage string) *QuicError {
}
func (e *QuicError) Error() string {
return e.ErrorMessage
return fmt.Sprintf("%s: %s", e.ErrorCode.String(), e.ErrorMessage)
}
var _ error = &QuicError{}

View file

@ -0,0 +1,16 @@
package protocol_test
import (
"github.com/lucas-clemente/quic-go/errorcodes"
"github.com/lucas-clemente/quic-go/protocol"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Quic error", func() {
It("has a string representation", func() {
err := protocol.Error(errorcodes.InternalError, "foobar")
Expect(err.Error()).To(Equal("InternalError: foobar"))
})
})