mirror of https://github.com/grpc/grpc-go.git
74 lines
2.5 KiB
Go
74 lines
2.5 KiB
Go
/*
|
|
*
|
|
* Copyright 2024 gRPC authors.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
*/
|
|
|
|
package grpchttp2
|
|
|
|
import "fmt"
|
|
|
|
// ErrCode represents an HTTP/2 Error Code. Error codes are 32-bit fields
|
|
// that are used in [RST_STREAM] and [GOAWAY] frames to convey the reasons for
|
|
// the stream or connection error. See [HTTP/2 Error Code] for definitions of
|
|
// each of the following error codes.
|
|
//
|
|
// [HTTP/2 Error Code]: https://httpwg.org/specs/rfc7540.html#ErrorCodes
|
|
// [RST_STREAM]: https://httpwg.org/specs/rfc7540.html#RST_STREAM
|
|
// [GOAWAY]: https://httpwg.org/specs/rfc7540.html#GOAWAY
|
|
type ErrCode uint32
|
|
|
|
// Error Codes defined by the HTTP/2 Spec.
|
|
const (
|
|
ErrCodeNoError ErrCode = 0x0
|
|
ErrCodeProtocol ErrCode = 0x1
|
|
ErrCodeInternal ErrCode = 0x2
|
|
ErrCodeFlowControl ErrCode = 0x3
|
|
ErrCodeSettingsTimeout ErrCode = 0x4
|
|
ErrCodeStreamClosed ErrCode = 0x5
|
|
ErrCodeFrameSize ErrCode = 0x6
|
|
ErrCodeRefusedStream ErrCode = 0x7
|
|
ErrCodeCancel ErrCode = 0x8
|
|
ErrCodeCompression ErrCode = 0x9
|
|
ErrCodeConnect ErrCode = 0xa
|
|
ErrCodeEnhanceYourCalm ErrCode = 0xb
|
|
ErrCodeInadequateSecurity ErrCode = 0xc
|
|
ErrCodeHTTP11Required ErrCode = 0xd
|
|
)
|
|
|
|
var errorCodeNames = map[ErrCode]string{
|
|
ErrCodeNoError: "NO_ERROR",
|
|
ErrCodeProtocol: "PROTOCOL_ERROR",
|
|
ErrCodeInternal: "INTERNAL_ERROR",
|
|
ErrCodeFlowControl: "FLOW_CONTROL_ERROR",
|
|
ErrCodeSettingsTimeout: "SETTINGS_TIMEOUT",
|
|
ErrCodeStreamClosed: "STREAM_CLOSED",
|
|
ErrCodeFrameSize: "FRAME_SIZE_ERROR",
|
|
ErrCodeRefusedStream: "REFUSED_STREAM",
|
|
ErrCodeCancel: "CANCEL",
|
|
ErrCodeCompression: "COMPRESSION_ERROR",
|
|
ErrCodeConnect: "CONNECT_ERROR",
|
|
ErrCodeEnhanceYourCalm: "ENHANCE_YOUR_CALM",
|
|
ErrCodeInadequateSecurity: "INADEQUATE_SECURITY",
|
|
ErrCodeHTTP11Required: "HTTP_1_1_REQUIRED",
|
|
}
|
|
|
|
func (err ErrCode) String() string {
|
|
if v, ok := errorCodeNames[err]; ok {
|
|
return v
|
|
}
|
|
return fmt.Sprintf("unknown error code %#x", uint32(err))
|
|
}
|