27 #ifndef GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H
28 #define GRPC_CORE_LIB_TRANSPORT_STATIC_METADATA_H
37 std::is_trivially_destructible<grpc_core::StaticMetadataSlice>::value,
38 "grpc_core::StaticMetadataSlice must be trivially destructible.");
39 #define GRPC_STATIC_MDSTR_COUNT 108
58 #define GRPC_MDSTR_PATH (grpc_static_slice_table()[0])
60 #define GRPC_MDSTR_METHOD (grpc_static_slice_table()[1])
62 #define GRPC_MDSTR_STATUS (grpc_static_slice_table()[2])
64 #define GRPC_MDSTR_AUTHORITY (grpc_static_slice_table()[3])
66 #define GRPC_MDSTR_SCHEME (grpc_static_slice_table()[4])
68 #define GRPC_MDSTR_TE (grpc_static_slice_table()[5])
70 #define GRPC_MDSTR_GRPC_MESSAGE (grpc_static_slice_table()[6])
72 #define GRPC_MDSTR_GRPC_STATUS (grpc_static_slice_table()[7])
74 #define GRPC_MDSTR_GRPC_PAYLOAD_BIN (grpc_static_slice_table()[8])
76 #define GRPC_MDSTR_GRPC_ENCODING (grpc_static_slice_table()[9])
78 #define GRPC_MDSTR_GRPC_ACCEPT_ENCODING (grpc_static_slice_table()[10])
80 #define GRPC_MDSTR_GRPC_SERVER_STATS_BIN (grpc_static_slice_table()[11])
82 #define GRPC_MDSTR_GRPC_TAGS_BIN (grpc_static_slice_table()[12])
84 #define GRPC_MDSTR_GRPC_TRACE_BIN (grpc_static_slice_table()[13])
86 #define GRPC_MDSTR_CONTENT_TYPE (grpc_static_slice_table()[14])
88 #define GRPC_MDSTR_CONTENT_ENCODING (grpc_static_slice_table()[15])
90 #define GRPC_MDSTR_ACCEPT_ENCODING (grpc_static_slice_table()[16])
92 #define GRPC_MDSTR_GRPC_INTERNAL_ENCODING_REQUEST \
93 (grpc_static_slice_table()[17])
95 #define GRPC_MDSTR_GRPC_INTERNAL_STREAM_ENCODING_REQUEST \
96 (grpc_static_slice_table()[18])
98 #define GRPC_MDSTR_USER_AGENT (grpc_static_slice_table()[19])
100 #define GRPC_MDSTR_HOST (grpc_static_slice_table()[20])
102 #define GRPC_MDSTR_GRPC_PREVIOUS_RPC_ATTEMPTS (grpc_static_slice_table()[21])
104 #define GRPC_MDSTR_GRPC_RETRY_PUSHBACK_MS (grpc_static_slice_table()[22])
106 #define GRPC_MDSTR_X_ENDPOINT_LOAD_METRICS_BIN (grpc_static_slice_table()[23])
108 #define GRPC_MDSTR_GRPC_TIMEOUT (grpc_static_slice_table()[24])
110 #define GRPC_MDSTR_1 (grpc_static_slice_table()[25])
112 #define GRPC_MDSTR_2 (grpc_static_slice_table()[26])
114 #define GRPC_MDSTR_3 (grpc_static_slice_table()[27])
116 #define GRPC_MDSTR_4 (grpc_static_slice_table()[28])
118 #define GRPC_MDSTR_EMPTY (grpc_static_slice_table()[29])
120 #define GRPC_MDSTR_GRPC_DOT_WAIT_FOR_READY (grpc_static_slice_table()[30])
122 #define GRPC_MDSTR_GRPC_DOT_TIMEOUT (grpc_static_slice_table()[31])
124 #define GRPC_MDSTR_GRPC_DOT_MAX_REQUEST_MESSAGE_BYTES \
125 (grpc_static_slice_table()[32])
127 #define GRPC_MDSTR_GRPC_DOT_MAX_RESPONSE_MESSAGE_BYTES \
128 (grpc_static_slice_table()[33])
130 #define GRPC_MDSTR_SLASH_GRPC_DOT_LB_DOT_V1_DOT_LOADBALANCER_SLASH_BALANCELOAD \
131 (grpc_static_slice_table()[34])
133 #define GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_LOAD_STATS_DOT_V2_DOT_LOADREPORTINGSERVICE_SLASH_STREAMLOADSTATS \
134 (grpc_static_slice_table()[35])
136 #define GRPC_MDSTR_SLASH_GRPC_DOT_HEALTH_DOT_V1_DOT_HEALTH_SLASH_WATCH \
137 (grpc_static_slice_table()[36])
140 #define GRPC_MDSTR_SLASH_ENVOY_DOT_SERVICE_DOT_DISCOVERY_DOT_V2_DOT_AGGREGATEDDISCOVERYSERVICE_SLASH_STREAMAGGREGATEDRESOURCES \
141 (grpc_static_slice_table()[37])
143 #define GRPC_MDSTR_DEFLATE (grpc_static_slice_table()[38])
145 #define GRPC_MDSTR_GZIP (grpc_static_slice_table()[39])
147 #define GRPC_MDSTR_STREAM_SLASH_GZIP (grpc_static_slice_table()[40])
149 #define GRPC_MDSTR_GET (grpc_static_slice_table()[41])
151 #define GRPC_MDSTR_POST (grpc_static_slice_table()[42])
153 #define GRPC_MDSTR_SLASH (grpc_static_slice_table()[43])
155 #define GRPC_MDSTR_SLASH_INDEX_DOT_HTML (grpc_static_slice_table()[44])
157 #define GRPC_MDSTR_HTTP (grpc_static_slice_table()[45])
159 #define GRPC_MDSTR_HTTPS (grpc_static_slice_table()[46])
161 #define GRPC_MDSTR_200 (grpc_static_slice_table()[47])
163 #define GRPC_MDSTR_204 (grpc_static_slice_table()[48])
165 #define GRPC_MDSTR_206 (grpc_static_slice_table()[49])
167 #define GRPC_MDSTR_304 (grpc_static_slice_table()[50])
169 #define GRPC_MDSTR_400 (grpc_static_slice_table()[51])
171 #define GRPC_MDSTR_404 (grpc_static_slice_table()[52])
173 #define GRPC_MDSTR_500 (grpc_static_slice_table()[53])
175 #define GRPC_MDSTR_ACCEPT_CHARSET (grpc_static_slice_table()[54])
177 #define GRPC_MDSTR_GZIP_COMMA_DEFLATE (grpc_static_slice_table()[55])
179 #define GRPC_MDSTR_ACCEPT_LANGUAGE (grpc_static_slice_table()[56])
181 #define GRPC_MDSTR_ACCEPT_RANGES (grpc_static_slice_table()[57])
183 #define GRPC_MDSTR_ACCEPT (grpc_static_slice_table()[58])
185 #define GRPC_MDSTR_ACCESS_CONTROL_ALLOW_ORIGIN (grpc_static_slice_table()[59])
187 #define GRPC_MDSTR_AGE (grpc_static_slice_table()[60])
189 #define GRPC_MDSTR_ALLOW (grpc_static_slice_table()[61])
191 #define GRPC_MDSTR_AUTHORIZATION (grpc_static_slice_table()[62])
193 #define GRPC_MDSTR_CACHE_CONTROL (grpc_static_slice_table()[63])
195 #define GRPC_MDSTR_CONTENT_DISPOSITION (grpc_static_slice_table()[64])
197 #define GRPC_MDSTR_CONTENT_LANGUAGE (grpc_static_slice_table()[65])
199 #define GRPC_MDSTR_CONTENT_LENGTH (grpc_static_slice_table()[66])
201 #define GRPC_MDSTR_CONTENT_LOCATION (grpc_static_slice_table()[67])
203 #define GRPC_MDSTR_CONTENT_RANGE (grpc_static_slice_table()[68])
205 #define GRPC_MDSTR_COOKIE (grpc_static_slice_table()[69])
207 #define GRPC_MDSTR_DATE (grpc_static_slice_table()[70])
209 #define GRPC_MDSTR_ETAG (grpc_static_slice_table()[71])
211 #define GRPC_MDSTR_EXPECT (grpc_static_slice_table()[72])
213 #define GRPC_MDSTR_EXPIRES (grpc_static_slice_table()[73])
215 #define GRPC_MDSTR_FROM (grpc_static_slice_table()[74])
217 #define GRPC_MDSTR_IF_MATCH (grpc_static_slice_table()[75])
219 #define GRPC_MDSTR_IF_MODIFIED_SINCE (grpc_static_slice_table()[76])
221 #define GRPC_MDSTR_IF_NONE_MATCH (grpc_static_slice_table()[77])
223 #define GRPC_MDSTR_IF_RANGE (grpc_static_slice_table()[78])
225 #define GRPC_MDSTR_IF_UNMODIFIED_SINCE (grpc_static_slice_table()[79])
227 #define GRPC_MDSTR_LAST_MODIFIED (grpc_static_slice_table()[80])
229 #define GRPC_MDSTR_LINK (grpc_static_slice_table()[81])
231 #define GRPC_MDSTR_LOCATION (grpc_static_slice_table()[82])
233 #define GRPC_MDSTR_MAX_FORWARDS (grpc_static_slice_table()[83])
235 #define GRPC_MDSTR_PROXY_AUTHENTICATE (grpc_static_slice_table()[84])
237 #define GRPC_MDSTR_PROXY_AUTHORIZATION (grpc_static_slice_table()[85])
239 #define GRPC_MDSTR_RANGE (grpc_static_slice_table()[86])
241 #define GRPC_MDSTR_REFERER (grpc_static_slice_table()[87])
243 #define GRPC_MDSTR_REFRESH (grpc_static_slice_table()[88])
245 #define GRPC_MDSTR_RETRY_AFTER (grpc_static_slice_table()[89])
247 #define GRPC_MDSTR_SERVER (grpc_static_slice_table()[90])
249 #define GRPC_MDSTR_SET_COOKIE (grpc_static_slice_table()[91])
251 #define GRPC_MDSTR_STRICT_TRANSPORT_SECURITY (grpc_static_slice_table()[92])
253 #define GRPC_MDSTR_TRANSFER_ENCODING (grpc_static_slice_table()[93])
255 #define GRPC_MDSTR_VARY (grpc_static_slice_table()[94])
257 #define GRPC_MDSTR_VIA (grpc_static_slice_table()[95])
259 #define GRPC_MDSTR_WWW_AUTHENTICATE (grpc_static_slice_table()[96])
261 #define GRPC_MDSTR_0 (grpc_static_slice_table()[97])
263 #define GRPC_MDSTR_IDENTITY (grpc_static_slice_table()[98])
265 #define GRPC_MDSTR_TRAILERS (grpc_static_slice_table()[99])
267 #define GRPC_MDSTR_APPLICATION_SLASH_GRPC (grpc_static_slice_table()[100])
269 #define GRPC_MDSTR_GRPC (grpc_static_slice_table()[101])
271 #define GRPC_MDSTR_PUT (grpc_static_slice_table()[102])
273 #define GRPC_MDSTR_LB_COST_BIN (grpc_static_slice_table()[103])
275 #define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE (grpc_static_slice_table()[104])
277 #define GRPC_MDSTR_IDENTITY_COMMA_GZIP (grpc_static_slice_table()[105])
279 #define GRPC_MDSTR_DEFLATE_COMMA_GZIP (grpc_static_slice_table()[106])
281 #define GRPC_MDSTR_IDENTITY_COMMA_DEFLATE_COMMA_GZIP \
282 (grpc_static_slice_table()[107])
285 struct StaticSliceRefcount;
295 #define GRPC_IS_STATIC_METADATA_STRING(slice) \
296 ((slice).refcount != NULL && \
297 (slice).refcount->GetType() == grpc_slice_refcount::Type::STATIC)
299 #define GRPC_STATIC_METADATA_INDEX(static_slice) \
300 (reinterpret_cast<grpc_core::StaticSliceRefcount*>((static_slice).refcount) \
303 #define GRPC_STATIC_MDELEM_COUNT 85
324 #define GRPC_MDELEM_AUTHORITY_EMPTY (grpc_static_mdelem_manifested()[0])
326 #define GRPC_MDELEM_METHOD_GET (grpc_static_mdelem_manifested()[1])
328 #define GRPC_MDELEM_METHOD_POST (grpc_static_mdelem_manifested()[2])
330 #define GRPC_MDELEM_PATH_SLASH (grpc_static_mdelem_manifested()[3])
332 #define GRPC_MDELEM_PATH_SLASH_INDEX_DOT_HTML \
333 (grpc_static_mdelem_manifested()[4])
335 #define GRPC_MDELEM_SCHEME_HTTP (grpc_static_mdelem_manifested()[5])
337 #define GRPC_MDELEM_SCHEME_HTTPS (grpc_static_mdelem_manifested()[6])
339 #define GRPC_MDELEM_STATUS_200 (grpc_static_mdelem_manifested()[7])
341 #define GRPC_MDELEM_STATUS_204 (grpc_static_mdelem_manifested()[8])
343 #define GRPC_MDELEM_STATUS_206 (grpc_static_mdelem_manifested()[9])
345 #define GRPC_MDELEM_STATUS_304 (grpc_static_mdelem_manifested()[10])
347 #define GRPC_MDELEM_STATUS_400 (grpc_static_mdelem_manifested()[11])
349 #define GRPC_MDELEM_STATUS_404 (grpc_static_mdelem_manifested()[12])
351 #define GRPC_MDELEM_STATUS_500 (grpc_static_mdelem_manifested()[13])
353 #define GRPC_MDELEM_ACCEPT_CHARSET_EMPTY (grpc_static_mdelem_manifested()[14])
355 #define GRPC_MDELEM_ACCEPT_ENCODING_GZIP_COMMA_DEFLATE \
356 (grpc_static_mdelem_manifested()[15])
358 #define GRPC_MDELEM_ACCEPT_LANGUAGE_EMPTY (grpc_static_mdelem_manifested()[16])
360 #define GRPC_MDELEM_ACCEPT_RANGES_EMPTY (grpc_static_mdelem_manifested()[17])
362 #define GRPC_MDELEM_ACCEPT_EMPTY (grpc_static_mdelem_manifested()[18])
364 #define GRPC_MDELEM_ACCESS_CONTROL_ALLOW_ORIGIN_EMPTY \
365 (grpc_static_mdelem_manifested()[19])
367 #define GRPC_MDELEM_AGE_EMPTY (grpc_static_mdelem_manifested()[20])
369 #define GRPC_MDELEM_ALLOW_EMPTY (grpc_static_mdelem_manifested()[21])
371 #define GRPC_MDELEM_AUTHORIZATION_EMPTY (grpc_static_mdelem_manifested()[22])
373 #define GRPC_MDELEM_CACHE_CONTROL_EMPTY (grpc_static_mdelem_manifested()[23])
375 #define GRPC_MDELEM_CONTENT_DISPOSITION_EMPTY \
376 (grpc_static_mdelem_manifested()[24])
378 #define GRPC_MDELEM_CONTENT_ENCODING_EMPTY (grpc_static_mdelem_manifested()[25])
380 #define GRPC_MDELEM_CONTENT_LANGUAGE_EMPTY (grpc_static_mdelem_manifested()[26])
382 #define GRPC_MDELEM_CONTENT_LENGTH_EMPTY (grpc_static_mdelem_manifested()[27])
384 #define GRPC_MDELEM_CONTENT_LOCATION_EMPTY (grpc_static_mdelem_manifested()[28])
386 #define GRPC_MDELEM_CONTENT_RANGE_EMPTY (grpc_static_mdelem_manifested()[29])
388 #define GRPC_MDELEM_CONTENT_TYPE_EMPTY (grpc_static_mdelem_manifested()[30])
390 #define GRPC_MDELEM_COOKIE_EMPTY (grpc_static_mdelem_manifested()[31])
392 #define GRPC_MDELEM_DATE_EMPTY (grpc_static_mdelem_manifested()[32])
394 #define GRPC_MDELEM_ETAG_EMPTY (grpc_static_mdelem_manifested()[33])
396 #define GRPC_MDELEM_EXPECT_EMPTY (grpc_static_mdelem_manifested()[34])
398 #define GRPC_MDELEM_EXPIRES_EMPTY (grpc_static_mdelem_manifested()[35])
400 #define GRPC_MDELEM_FROM_EMPTY (grpc_static_mdelem_manifested()[36])
402 #define GRPC_MDELEM_HOST_EMPTY (grpc_static_mdelem_manifested()[37])
404 #define GRPC_MDELEM_IF_MATCH_EMPTY (grpc_static_mdelem_manifested()[38])
406 #define GRPC_MDELEM_IF_MODIFIED_SINCE_EMPTY \
407 (grpc_static_mdelem_manifested()[39])
409 #define GRPC_MDELEM_IF_NONE_MATCH_EMPTY (grpc_static_mdelem_manifested()[40])
411 #define GRPC_MDELEM_IF_RANGE_EMPTY (grpc_static_mdelem_manifested()[41])
413 #define GRPC_MDELEM_IF_UNMODIFIED_SINCE_EMPTY \
414 (grpc_static_mdelem_manifested()[42])
416 #define GRPC_MDELEM_LAST_MODIFIED_EMPTY (grpc_static_mdelem_manifested()[43])
418 #define GRPC_MDELEM_LINK_EMPTY (grpc_static_mdelem_manifested()[44])
420 #define GRPC_MDELEM_LOCATION_EMPTY (grpc_static_mdelem_manifested()[45])
422 #define GRPC_MDELEM_MAX_FORWARDS_EMPTY (grpc_static_mdelem_manifested()[46])
424 #define GRPC_MDELEM_PROXY_AUTHENTICATE_EMPTY \
425 (grpc_static_mdelem_manifested()[47])
427 #define GRPC_MDELEM_PROXY_AUTHORIZATION_EMPTY \
428 (grpc_static_mdelem_manifested()[48])
430 #define GRPC_MDELEM_RANGE_EMPTY (grpc_static_mdelem_manifested()[49])
432 #define GRPC_MDELEM_REFERER_EMPTY (grpc_static_mdelem_manifested()[50])
434 #define GRPC_MDELEM_REFRESH_EMPTY (grpc_static_mdelem_manifested()[51])
436 #define GRPC_MDELEM_RETRY_AFTER_EMPTY (grpc_static_mdelem_manifested()[52])
438 #define GRPC_MDELEM_SERVER_EMPTY (grpc_static_mdelem_manifested()[53])
440 #define GRPC_MDELEM_SET_COOKIE_EMPTY (grpc_static_mdelem_manifested()[54])
442 #define GRPC_MDELEM_STRICT_TRANSPORT_SECURITY_EMPTY \
443 (grpc_static_mdelem_manifested()[55])
445 #define GRPC_MDELEM_TRANSFER_ENCODING_EMPTY \
446 (grpc_static_mdelem_manifested()[56])
448 #define GRPC_MDELEM_USER_AGENT_EMPTY (grpc_static_mdelem_manifested()[57])
450 #define GRPC_MDELEM_VARY_EMPTY (grpc_static_mdelem_manifested()[58])
452 #define GRPC_MDELEM_VIA_EMPTY (grpc_static_mdelem_manifested()[59])
454 #define GRPC_MDELEM_WWW_AUTHENTICATE_EMPTY (grpc_static_mdelem_manifested()[60])
456 #define GRPC_MDELEM_GRPC_STATUS_0 (grpc_static_mdelem_manifested()[61])
458 #define GRPC_MDELEM_GRPC_STATUS_1 (grpc_static_mdelem_manifested()[62])
460 #define GRPC_MDELEM_GRPC_STATUS_2 (grpc_static_mdelem_manifested()[63])
462 #define GRPC_MDELEM_GRPC_ENCODING_IDENTITY (grpc_static_mdelem_manifested()[64])
464 #define GRPC_MDELEM_GRPC_ENCODING_GZIP (grpc_static_mdelem_manifested()[65])
466 #define GRPC_MDELEM_GRPC_ENCODING_DEFLATE (grpc_static_mdelem_manifested()[66])
468 #define GRPC_MDELEM_TE_TRAILERS (grpc_static_mdelem_manifested()[67])
470 #define GRPC_MDELEM_CONTENT_TYPE_APPLICATION_SLASH_GRPC \
471 (grpc_static_mdelem_manifested()[68])
473 #define GRPC_MDELEM_SCHEME_GRPC (grpc_static_mdelem_manifested()[69])
475 #define GRPC_MDELEM_METHOD_PUT (grpc_static_mdelem_manifested()[70])
477 #define GRPC_MDELEM_ACCEPT_ENCODING_EMPTY (grpc_static_mdelem_manifested()[71])
479 #define GRPC_MDELEM_CONTENT_ENCODING_IDENTITY \
480 (grpc_static_mdelem_manifested()[72])
482 #define GRPC_MDELEM_CONTENT_ENCODING_GZIP (grpc_static_mdelem_manifested()[73])
484 #define GRPC_MDELEM_LB_COST_BIN_EMPTY (grpc_static_mdelem_manifested()[74])
486 #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY \
487 (grpc_static_mdelem_manifested()[75])
489 #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE \
490 (grpc_static_mdelem_manifested()[76])
492 #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE \
493 (grpc_static_mdelem_manifested()[77])
495 #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_GZIP \
496 (grpc_static_mdelem_manifested()[78])
498 #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_GZIP \
499 (grpc_static_mdelem_manifested()[79])
501 #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_DEFLATE_COMMA_GZIP \
502 (grpc_static_mdelem_manifested()[80])
504 #define GRPC_MDELEM_GRPC_ACCEPT_ENCODING_IDENTITY_COMMA_DEFLATE_COMMA_GZIP \
505 (grpc_static_mdelem_manifested()[81])
507 #define GRPC_MDELEM_ACCEPT_ENCODING_IDENTITY \
508 (grpc_static_mdelem_manifested()[82])
510 #define GRPC_MDELEM_ACCEPT_ENCODING_GZIP (grpc_static_mdelem_manifested()[83])
512 #define GRPC_MDELEM_ACCEPT_ENCODING_IDENTITY_COMMA_GZIP \
513 (grpc_static_mdelem_manifested()[84])
574 #define GRPC_BATCH_INDEX_OF(slice) \
575 (GRPC_IS_STATIC_METADATA_STRING((slice)) && \
576 reinterpret_cast<grpc_core::StaticSliceRefcount*>((slice).refcount) \
577 ->index <= static_cast<uint32_t>(GRPC_BATCH_CALLOUTS_COUNT) \
578 ? static_cast<grpc_metadata_batch_callouts_index>( \
579 reinterpret_cast<grpc_core::StaticSliceRefcount*>( \
582 : GRPC_BATCH_CALLOUTS_COUNT)
585 #define GRPC_MDELEM_ACCEPT_ENCODING_FOR_ALGORITHMS(algs) \
586 (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table() \
587 [grpc_static_accept_encoding_metadata[(algs)]] \
589 GRPC_MDELEM_STORAGE_STATIC))
592 #define GRPC_MDELEM_ACCEPT_STREAM_ENCODING_FOR_ALGORITHMS(algs) \
593 (GRPC_MAKE_MDELEM(&grpc_static_mdelem_table() \
594 [grpc_static_accept_stream_encoding_metadata[(algs)]] \
596 GRPC_MDELEM_STORAGE_STATIC))
#define GPR_DEBUG_ASSERT(x)
Definition: log.h:103
Round Robin Policy.
Definition: backend_metric.cc:24
grpc_mdelem * g_static_mdelem_manifested
Definition: static_metadata.cc:1143
StaticSliceRefcount * g_static_metadata_slice_refcounts
Definition: static_metadata.cc:1141
const StaticMetadataSlice * g_static_metadata_slice_table
Definition: static_metadata.cc:1140
StaticMetadata * g_static_mdelem_table
Definition: static_metadata.cc:1142
uint64_t StaticMetadataInitCanary()
Definition: static_metadata.cc:1145
constexpr uint64_t kGrpcStaticMetadataInitCanary
Definition: static_metadata.h:45
Definition: slice_internal.h:176
Definition: metadata_batch.h:33
Definition: metadata.h:98