/proc/self/cwd/envoy/http/codes.h
Line | Count | Source |
1 | | #pragma once |
2 | | |
3 | | #include <chrono> |
4 | | |
5 | | #include "envoy/stats/scope.h" |
6 | | |
7 | | namespace Envoy { |
8 | | namespace Http { |
9 | | |
10 | | /** |
11 | | * HTTP response codes. |
12 | | * http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml |
13 | | */ |
14 | | enum class Code : uint16_t { |
15 | | // clang-format off |
16 | | Continue = 100, |
17 | | SwitchingProtocols = 101, |
18 | | |
19 | | OK = 200, |
20 | | Created = 201, |
21 | | Accepted = 202, |
22 | | NonAuthoritativeInformation = 203, |
23 | | NoContent = 204, |
24 | | ResetContent = 205, |
25 | | PartialContent = 206, |
26 | | MultiStatus = 207, |
27 | | AlreadyReported = 208, |
28 | | IMUsed = 226, |
29 | | |
30 | | MultipleChoices = 300, |
31 | | MovedPermanently = 301, |
32 | | Found = 302, |
33 | | SeeOther = 303, |
34 | | NotModified = 304, |
35 | | UseProxy = 305, |
36 | | TemporaryRedirect = 307, |
37 | | PermanentRedirect = 308, |
38 | | |
39 | | BadRequest = 400, |
40 | | Unauthorized = 401, |
41 | | PaymentRequired = 402, |
42 | | Forbidden = 403, |
43 | | NotFound = 404, |
44 | | MethodNotAllowed = 405, |
45 | | NotAcceptable = 406, |
46 | | ProxyAuthenticationRequired = 407, |
47 | | RequestTimeout = 408, |
48 | | Conflict = 409, |
49 | | Gone = 410, |
50 | | LengthRequired = 411, |
51 | | PreconditionFailed = 412, |
52 | | PayloadTooLarge = 413, |
53 | | URITooLong = 414, |
54 | | UnsupportedMediaType = 415, |
55 | | RangeNotSatisfiable = 416, |
56 | | ExpectationFailed = 417, |
57 | | MisdirectedRequest = 421, |
58 | | UnprocessableEntity = 422, |
59 | | Locked = 423, |
60 | | FailedDependency = 424, |
61 | | TooEarly = 425, |
62 | | UpgradeRequired = 426, |
63 | | PreconditionRequired = 428, |
64 | | TooManyRequests = 429, |
65 | | RequestHeaderFieldsTooLarge = 431, |
66 | | |
67 | | InternalServerError = 500, |
68 | | NotImplemented = 501, |
69 | | BadGateway = 502, |
70 | | ServiceUnavailable = 503, |
71 | | GatewayTimeout = 504, |
72 | | HTTPVersionNotSupported = 505, |
73 | | VariantAlsoNegotiates = 506, |
74 | | InsufficientStorage = 507, |
75 | | LoopDetected = 508, |
76 | | NotExtended = 510, |
77 | | NetworkAuthenticationRequired = 511 |
78 | | // clang-format on |
79 | | }; |
80 | | |
81 | | /** |
82 | | * Manages updating of statistics for HTTP Status Codes. Sets up string-tokens |
83 | | * for fast combining of tokens based on scope, status-code buckets (2xx, |
84 | | * 4xx...), and exact status code. |
85 | | */ |
86 | | class CodeStats { |
87 | | public: |
88 | 27.7k | virtual ~CodeStats() = default; |
89 | | |
90 | | struct ResponseStatInfo; |
91 | | struct ResponseTimingInfo; |
92 | | |
93 | | /** |
94 | | * Charge a simple response stat to an upstream. exclude_http_code_stats will skip charging |
95 | | * HTTP group/individual status code stats if set to True. |
96 | | */ |
97 | | virtual void chargeBasicResponseStat(Stats::Scope& scope, Stats::StatName prefix, |
98 | | Code response_code, bool exclude_http_code_stats) const PURE; |
99 | | |
100 | | /** |
101 | | * Charge a response stat to both agg counters (*xx) as well as code specific counters. This |
102 | | * routine also looks for the x-envoy-upstream-canary header and if it is set, also charges |
103 | | * canary stats. exclude_http_code_stats will skip charging HTTP group/individual status |
104 | | * code stats if set to True. |
105 | | */ |
106 | | virtual void chargeResponseStat(const ResponseStatInfo& info, |
107 | | bool exclude_http_code_stats) const PURE; |
108 | | |
109 | | /** |
110 | | * Charge a response timing to the various dynamic stat postfixes. |
111 | | */ |
112 | | virtual void chargeResponseTiming(const ResponseTimingInfo& info) const PURE; |
113 | | }; |
114 | | |
115 | | } // namespace Http |
116 | | } // namespace Envoy |