grpc 1.51.0 → 1.52.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (886) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +91 -23
  3. data/include/grpc/byte_buffer.h +76 -1
  4. data/include/grpc/byte_buffer_reader.h +19 -1
  5. data/include/grpc/compression.h +2 -2
  6. data/include/grpc/event_engine/event_engine.h +17 -3
  7. data/include/grpc/event_engine/internal/memory_allocator_impl.h +1 -1
  8. data/include/grpc/event_engine/internal/slice_cast.h +67 -0
  9. data/include/grpc/event_engine/memory_allocator.h +1 -1
  10. data/include/grpc/event_engine/slice.h +24 -4
  11. data/include/grpc/event_engine/slice_buffer.h +14 -2
  12. data/include/grpc/fork.h +25 -1
  13. data/include/grpc/grpc.h +3 -3
  14. data/include/grpc/grpc_posix.h +1 -1
  15. data/include/grpc/impl/codegen/atm.h +3 -71
  16. data/include/grpc/impl/codegen/atm_gcc_atomic.h +3 -58
  17. data/include/grpc/impl/codegen/atm_gcc_sync.h +3 -59
  18. data/include/grpc/impl/codegen/atm_windows.h +3 -106
  19. data/include/grpc/impl/codegen/byte_buffer.h +4 -78
  20. data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -19
  21. data/include/grpc/impl/codegen/compression_types.h +3 -82
  22. data/include/grpc/impl/codegen/connectivity_state.h +3 -20
  23. data/include/grpc/impl/codegen/fork.h +4 -25
  24. data/include/grpc/impl/codegen/gpr_types.h +2 -34
  25. data/include/grpc/impl/codegen/grpc_types.h +3 -787
  26. data/include/grpc/impl/codegen/log.h +3 -86
  27. data/include/grpc/impl/codegen/port_platform.h +3 -755
  28. data/include/grpc/impl/codegen/propagation_bits.h +3 -28
  29. data/include/grpc/impl/codegen/slice.h +3 -106
  30. data/include/grpc/impl/codegen/status.h +4 -131
  31. data/include/grpc/impl/codegen/sync.h +3 -42
  32. data/include/grpc/impl/codegen/sync_abseil.h +3 -12
  33. data/include/grpc/impl/codegen/sync_custom.h +3 -14
  34. data/include/grpc/impl/codegen/sync_generic.h +3 -25
  35. data/include/grpc/impl/codegen/sync_posix.h +3 -28
  36. data/include/grpc/impl/codegen/sync_windows.h +3 -16
  37. data/include/grpc/impl/compression_types.h +109 -0
  38. data/include/grpc/impl/connectivity_state.h +47 -0
  39. data/include/grpc/impl/grpc_types.h +824 -0
  40. data/include/grpc/impl/propagation_bits.h +54 -0
  41. data/include/grpc/impl/slice_type.h +112 -0
  42. data/include/grpc/load_reporting.h +1 -1
  43. data/include/grpc/module.modulemap +5 -1
  44. data/include/grpc/slice.h +1 -1
  45. data/include/grpc/status.h +131 -1
  46. data/include/grpc/support/atm.h +70 -1
  47. data/include/grpc/support/atm_gcc_atomic.h +59 -1
  48. data/include/grpc/support/atm_gcc_sync.h +58 -1
  49. data/include/grpc/support/atm_windows.h +105 -1
  50. data/include/grpc/support/log.h +87 -1
  51. data/include/grpc/support/log_windows.h +1 -1
  52. data/include/grpc/support/port_platform.h +767 -1
  53. data/include/grpc/support/string_util.h +1 -1
  54. data/include/grpc/support/sync.h +35 -2
  55. data/include/grpc/support/sync_abseil.h +11 -1
  56. data/include/grpc/support/sync_custom.h +13 -1
  57. data/include/grpc/support/sync_generic.h +24 -1
  58. data/include/grpc/support/sync_posix.h +27 -1
  59. data/include/grpc/support/sync_windows.h +15 -1
  60. data/include/grpc/support/time.h +25 -2
  61. data/src/core/ext/filters/census/grpc_context.cc +17 -18
  62. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +9 -9
  63. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -1
  64. data/src/core/ext/filters/channel_idle/idle_filter_state.h +1 -1
  65. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -0
  66. data/src/core/ext/filters/client_channel/backup_poller.cc +21 -21
  67. data/src/core/ext/filters/client_channel/backup_poller.h +21 -21
  68. data/src/core/ext/filters/client_channel/channel_connectivity.cc +45 -24
  69. data/src/core/ext/filters/client_channel/client_channel.cc +40 -31
  70. data/src/core/ext/filters/client_channel/client_channel.h +7 -6
  71. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +17 -17
  72. data/src/core/ext/filters/client_channel/client_channel_channelz.h +19 -19
  73. data/src/core/ext/filters/client_channel/client_channel_factory.cc +17 -17
  74. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +17 -17
  75. data/src/core/ext/filters/client_channel/config_selector.h +16 -20
  76. data/src/core/ext/filters/client_channel/dynamic_filters.cc +8 -8
  77. data/src/core/ext/filters/client_channel/global_subchannel_pool.h +18 -18
  78. data/src/core/ext/filters/client_channel/health/health_check_client.cc +1 -1
  79. data/src/core/ext/filters/client_channel/http_proxy.cc +39 -39
  80. data/src/core/ext/filters/client_channel/http_proxy.h +18 -18
  81. data/src/core/ext/filters/client_channel/lb_call_state_internal.h +39 -0
  82. data/src/core/ext/filters/client_channel/lb_policy/backend_metric_data.h +17 -17
  83. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +2 -2
  84. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -2
  85. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +58 -130
  86. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +37 -21
  87. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +102 -116
  88. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +24 -25
  89. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +2 -4
  90. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +17 -17
  91. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +18 -19
  92. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +18 -19
  93. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +18 -19
  94. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +5 -5
  95. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +173 -196
  96. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +10 -19
  97. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +66 -97
  98. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +14 -13
  99. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +1 -1
  100. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +98 -84
  101. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +10 -8
  102. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +30 -16
  103. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +21 -35
  104. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +45 -39
  105. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +11 -23
  106. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +16 -49
  107. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +31 -21
  108. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc +651 -0
  109. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.h +60 -0
  110. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +4 -4
  111. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +18 -18
  112. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +0 -1
  113. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +3 -3
  114. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +40 -41
  115. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +21 -21
  116. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +60 -59
  117. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +67 -66
  118. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +50 -51
  119. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc +18 -18
  120. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +18 -18
  121. data/src/core/ext/filters/client_channel/resolver/dns/dns_resolver_selection.h +18 -19
  122. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  123. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  124. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +0 -1
  125. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +44 -33
  126. data/src/core/ext/filters/client_channel/resolver/polling_resolver.h +8 -10
  127. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +59 -73
  128. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h +1 -1
  129. data/src/core/ext/filters/client_channel/retry_filter.cc +1 -1
  130. data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
  131. data/src/core/ext/filters/client_channel/retry_throttle.cc +19 -21
  132. data/src/core/ext/filters/client_channel/retry_throttle.h +18 -18
  133. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
  134. data/src/core/ext/filters/client_channel/subchannel.cc +139 -155
  135. data/src/core/ext/filters/client_channel/subchannel.h +15 -38
  136. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +18 -18
  137. data/src/core/ext/filters/deadline/deadline_filter.cc +21 -3
  138. data/src/core/ext/filters/deadline/deadline_filter.h +1 -1
  139. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +2 -1
  140. data/src/core/ext/filters/http/client/http_client_filter.cc +20 -21
  141. data/src/core/ext/filters/http/client/http_client_filter.h +17 -17
  142. data/src/core/ext/filters/http/client_authority_filter.cc +18 -18
  143. data/src/core/ext/filters/http/client_authority_filter.h +18 -18
  144. data/src/core/ext/filters/http/http_filters_plugin.cc +35 -51
  145. data/src/core/ext/filters/http/message_compress/compression_filter.cc +315 -0
  146. data/src/core/ext/filters/http/message_compress/compression_filter.h +132 -0
  147. data/src/core/ext/filters/http/server/http_server_filter.cc +18 -18
  148. data/src/core/ext/filters/http/server/http_server_filter.h +18 -18
  149. data/src/core/ext/filters/message_size/message_size_filter.cc +6 -6
  150. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  151. data/src/core/ext/filters/server_config_selector/server_config_selector.h +6 -8
  152. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +3 -4
  153. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +229 -0
  154. data/src/core/ext/filters/stateful_session/stateful_session_filter.h +66 -0
  155. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc +82 -0
  156. data/src/core/ext/filters/stateful_session/stateful_session_service_config_parser.h +93 -0
  157. data/src/core/ext/transport/chttp2/alpn/alpn.cc +18 -18
  158. data/src/core/ext/transport/chttp2/alpn/alpn.h +22 -22
  159. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +54 -44
  160. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +28 -22
  161. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +24 -25
  162. data/src/core/ext/transport/chttp2/server/chttp2_server.h +18 -18
  163. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +17 -17
  164. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +30 -30
  165. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +29 -29
  166. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +27 -27
  167. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +66 -35
  168. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +18 -19
  169. data/src/core/ext/transport/chttp2/transport/context_list.cc +19 -19
  170. data/src/core/ext/transport/chttp2/transport/context_list.h +25 -25
  171. data/src/core/ext/transport/chttp2/transport/decode_huff.cc +0 -36
  172. data/src/core/ext/transport/chttp2/transport/decode_huff.h +35 -82
  173. data/src/core/ext/transport/chttp2/transport/flow_control.cc +75 -38
  174. data/src/core/ext/transport/chttp2/transport/flow_control.h +56 -31
  175. data/src/core/ext/transport/chttp2/transport/frame.h +19 -19
  176. data/src/core/ext/transport/chttp2/transport/frame_data.cc +17 -17
  177. data/src/core/ext/transport/chttp2/transport/frame_data.h +22 -22
  178. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +23 -23
  179. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -18
  180. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +21 -21
  181. data/src/core/ext/transport/chttp2/transport/frame_ping.h +19 -19
  182. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +18 -18
  183. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +18 -18
  184. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +19 -19
  185. data/src/core/ext/transport/chttp2/transport/frame_settings.h +20 -20
  186. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +17 -17
  187. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +18 -18
  188. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +129 -176
  189. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +39 -58
  190. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +69 -111
  191. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +20 -20
  192. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +19 -20
  193. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +18 -18
  194. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +21 -19
  195. data/src/core/ext/transport/chttp2/transport/http2_settings.h +36 -34
  196. data/src/core/ext/transport/chttp2/transport/http_trace.cc +19 -0
  197. data/src/core/ext/transport/chttp2/transport/http_trace.h +24 -0
  198. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +20 -20
  199. data/src/core/ext/transport/chttp2/transport/huffsyms.h +19 -19
  200. data/src/core/ext/transport/chttp2/transport/internal.h +170 -163
  201. data/src/core/ext/transport/chttp2/transport/parsing.cc +96 -28
  202. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +19 -19
  203. data/src/core/ext/transport/chttp2/transport/stream_map.cc +23 -23
  204. data/src/core/ext/transport/chttp2/transport/stream_map.h +31 -31
  205. data/src/core/ext/transport/chttp2/transport/varint.cc +17 -17
  206. data/src/core/ext/transport/chttp2/transport/varint.h +24 -24
  207. data/src/core/ext/transport/chttp2/transport/writing.cc +45 -41
  208. data/src/core/ext/transport/inproc/inproc_plugin.cc +17 -17
  209. data/src/core/ext/transport/inproc/inproc_transport.cc +25 -25
  210. data/src/core/ext/transport/inproc/inproc_transport.h +19 -19
  211. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c +62 -0
  212. data/src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.h +179 -0
  213. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c +46 -0
  214. data/src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.h +98 -0
  215. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.c +47 -0
  216. data/src/core/ext/upb-generated/xds/core/v3/cidr.upb.h +107 -0
  217. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c +3 -2
  218. data/src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.h +9 -0
  219. data/src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c +0 -1
  220. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c +46 -0
  221. data/src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.h +98 -0
  222. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c +62 -0
  223. data/src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.h +174 -0
  224. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c +36 -0
  225. data/src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.h +74 -0
  226. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c +65 -0
  227. data/src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.h +191 -0
  228. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c +127 -0
  229. data/src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.h +474 -0
  230. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.c +67 -0
  231. data/src/core/ext/upb-generated/xds/type/v3/cel.upb.h +214 -0
  232. data/src/core/ext/upb-generated/xds/type/v3/range.upb.c +64 -0
  233. data/src/core/ext/upb-generated/xds/type/v3/range.upb.h +208 -0
  234. data/src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c +0 -1
  235. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c +60 -0
  236. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.h +40 -0
  237. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c +50 -0
  238. data/src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.h +35 -0
  239. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c +45 -0
  240. data/src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.h +35 -0
  241. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c +43 -0
  242. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.h +35 -0
  243. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c +51 -0
  244. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.h +40 -0
  245. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c +36 -0
  246. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.h +35 -0
  247. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c +55 -0
  248. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.h +40 -0
  249. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c +9 -9
  250. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c +71 -0
  251. data/src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.h +60 -0
  252. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c +60 -0
  253. data/src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.h +40 -0
  254. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c +36 -0
  255. data/src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.h +45 -0
  256. data/src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c +4 -7
  257. data/src/core/ext/xds/xds_api.cc +5 -27
  258. data/src/core/ext/xds/xds_api.h +2 -1
  259. data/src/core/ext/xds/xds_certificate_provider.h +1 -1
  260. data/src/core/ext/xds/xds_channel_args.h +1 -1
  261. data/src/core/ext/xds/xds_channel_stack_modifier.h +2 -2
  262. data/src/core/ext/xds/xds_client.cc +14 -6
  263. data/src/core/ext/xds/xds_client.h +6 -3
  264. data/src/core/ext/xds/xds_client_grpc.cc +26 -0
  265. data/src/core/ext/xds/xds_client_grpc.h +1 -1
  266. data/src/core/ext/xds/xds_client_stats.cc +17 -17
  267. data/src/core/ext/xds/xds_client_stats.h +18 -18
  268. data/src/core/ext/xds/xds_cluster.cc +94 -46
  269. data/src/core/ext/xds/xds_cluster.h +44 -23
  270. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +30 -50
  271. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +14 -9
  272. data/src/core/ext/xds/xds_common_types.cc +4 -3
  273. data/src/core/ext/xds/xds_endpoint.cc +8 -2
  274. data/src/core/ext/xds/xds_health_status.cc +80 -0
  275. data/src/core/ext/xds/xds_health_status.h +82 -0
  276. data/src/core/ext/xds/xds_http_fault_filter.cc +7 -6
  277. data/src/core/ext/xds/xds_http_fault_filter.h +3 -3
  278. data/src/core/ext/xds/xds_http_filters.cc +11 -6
  279. data/src/core/ext/xds/xds_http_filters.h +5 -5
  280. data/src/core/ext/xds/xds_http_rbac_filter.cc +7 -6
  281. data/src/core/ext/xds/xds_http_rbac_filter.h +3 -3
  282. data/src/core/ext/xds/xds_http_stateful_session_filter.cc +218 -0
  283. data/src/core/ext/xds/xds_http_stateful_session_filter.h +58 -0
  284. data/src/core/ext/xds/xds_lb_policy_registry.cc +0 -4
  285. data/src/core/ext/xds/xds_listener.cc +14 -28
  286. data/src/core/ext/xds/xds_listener.h +2 -0
  287. data/src/core/ext/xds/xds_resource_type_impl.h +8 -6
  288. data/src/core/ext/xds/xds_route_config.cc +501 -529
  289. data/src/core/ext/xds/xds_route_config.h +29 -18
  290. data/src/core/ext/xds/xds_server_config_fetcher.cc +12 -24
  291. data/src/core/ext/xds/xds_transport_grpc.cc +2 -2
  292. data/src/core/ext/xds/xds_transport_grpc.h +1 -1
  293. data/src/core/lib/address_utils/parse_address.cc +19 -19
  294. data/src/core/lib/address_utils/parse_address.h +32 -32
  295. data/src/core/lib/address_utils/sockaddr_utils.cc +29 -28
  296. data/src/core/lib/address_utils/sockaddr_utils.h +33 -33
  297. data/src/core/lib/avl/avl.h +4 -4
  298. data/src/core/lib/backoff/backoff.cc +17 -17
  299. data/src/core/lib/backoff/backoff.h +18 -18
  300. data/src/core/lib/channel/call_tracer.h +10 -1
  301. data/src/core/lib/channel/channel_args.cc +19 -20
  302. data/src/core/lib/channel/channel_args.h +43 -42
  303. data/src/core/lib/channel/channel_args_preconditioning.h +1 -1
  304. data/src/core/lib/channel/channel_stack.cc +39 -38
  305. data/src/core/lib/channel/channel_stack.h +127 -127
  306. data/src/core/lib/channel/channel_stack_builder.cc +17 -17
  307. data/src/core/lib/channel/channel_stack_builder_impl.cc +18 -18
  308. data/src/core/lib/channel/channel_trace.cc +17 -17
  309. data/src/core/lib/channel/channel_trace.h +19 -19
  310. data/src/core/lib/channel/channelz.cc +17 -18
  311. data/src/core/lib/channel/channelz.h +26 -26
  312. data/src/core/lib/channel/channelz_registry.cc +17 -17
  313. data/src/core/lib/channel/channelz_registry.h +18 -18
  314. data/src/core/lib/channel/connected_channel.cc +43 -34
  315. data/src/core/lib/channel/connected_channel.h +18 -18
  316. data/src/core/lib/channel/context.h +18 -18
  317. data/src/core/lib/channel/promise_based_filter.cc +191 -68
  318. data/src/core/lib/channel/promise_based_filter.h +10 -1
  319. data/src/core/lib/channel/status_util.cc +35 -17
  320. data/src/core/lib/channel/status_util.h +26 -19
  321. data/src/core/lib/compression/compression.cc +19 -19
  322. data/src/core/lib/compression/compression_internal.cc +41 -48
  323. data/src/core/lib/compression/compression_internal.h +22 -22
  324. data/src/core/lib/compression/message_compress.cc +21 -21
  325. data/src/core/lib/compression/message_compress.h +25 -25
  326. data/src/core/lib/config/core_configuration.h +1 -1
  327. data/src/core/lib/debug/stats.cc +17 -17
  328. data/src/core/lib/debug/stats.h +17 -17
  329. data/src/core/lib/debug/trace.cc +18 -18
  330. data/src/core/lib/debug/trace.h +19 -19
  331. data/src/core/lib/event_engine/executor/executor.h +1 -1
  332. data/src/core/lib/event_engine/forkable.h +1 -1
  333. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +27 -31
  334. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +2 -2
  335. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +36 -37
  336. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +3 -3
  337. data/src/core/lib/event_engine/posix_engine/event_poller.h +3 -3
  338. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +2 -2
  339. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +2 -2
  340. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +2 -2
  341. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +46 -46
  342. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +10 -12
  343. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +2 -2
  344. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +79 -41
  345. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +11 -9
  346. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +33 -40
  347. data/src/core/lib/event_engine/posix_engine/posix_engine.h +14 -14
  348. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +2 -2
  349. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +236 -0
  350. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.h +228 -0
  351. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc +380 -0
  352. data/src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.h +91 -0
  353. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +55 -283
  354. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +4 -49
  355. data/src/core/lib/event_engine/posix_engine/timer.cc +49 -49
  356. data/src/core/lib/event_engine/posix_engine/timer.h +87 -87
  357. data/src/core/lib/event_engine/posix_engine/timer_heap.cc +27 -27
  358. data/src/core/lib/event_engine/posix_engine/timer_heap.h +21 -21
  359. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +19 -20
  360. data/src/core/lib/event_engine/posix_engine/timer_manager.h +20 -20
  361. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +39 -8
  362. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +46 -40
  363. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +8 -7
  364. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +2 -2
  365. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +6 -7
  366. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +2 -2
  367. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +28 -28
  368. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +4 -4
  369. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +3 -3
  370. data/src/core/lib/event_engine/socket_notifier.h +1 -1
  371. data/src/core/lib/event_engine/tcp_socket_utils.cc +373 -0
  372. data/src/core/lib/event_engine/tcp_socket_utils.h +85 -0
  373. data/src/core/lib/event_engine/thread_pool.cc +19 -18
  374. data/src/core/lib/event_engine/thread_pool.h +17 -17
  375. data/src/core/lib/event_engine/time_util.h +1 -1
  376. data/src/core/lib/event_engine/windows/iocp.cc +13 -12
  377. data/src/core/lib/event_engine/windows/iocp.h +1 -1
  378. data/src/core/lib/event_engine/windows/win_socket.cc +2 -2
  379. data/src/core/lib/event_engine/windows/windows_engine.cc +8 -8
  380. data/src/core/lib/event_engine/windows/windows_engine.h +1 -1
  381. data/src/core/lib/experiments/experiments.cc +5 -16
  382. data/src/core/lib/experiments/experiments.h +7 -12
  383. data/src/core/lib/gpr/alloc.cc +19 -17
  384. data/src/core/lib/gpr/alloc.h +18 -18
  385. data/src/core/lib/gpr/atm.cc +17 -17
  386. data/src/core/lib/gpr/cpu_iphone.cc +24 -24
  387. data/src/core/lib/gpr/cpu_linux.cc +22 -21
  388. data/src/core/lib/gpr/cpu_posix.cc +23 -22
  389. data/src/core/lib/gpr/cpu_windows.cc +20 -18
  390. data/src/core/lib/gpr/log.cc +27 -19
  391. data/src/core/lib/gpr/log_android.cc +22 -20
  392. data/src/core/lib/gpr/log_linux.cc +21 -20
  393. data/src/core/lib/gpr/log_posix.cc +20 -19
  394. data/src/core/lib/gpr/log_windows.cc +25 -24
  395. data/src/core/lib/gpr/spinlock.h +18 -18
  396. data/src/core/lib/gpr/string.cc +25 -24
  397. data/src/core/lib/gpr/string.h +57 -57
  398. data/src/core/lib/gpr/string_posix.cc +24 -24
  399. data/src/core/lib/gpr/string_util_windows.cc +22 -22
  400. data/src/core/lib/gpr/string_windows.cc +24 -24
  401. data/src/core/lib/gpr/sync.cc +25 -25
  402. data/src/core/lib/gpr/sync_abseil.cc +22 -20
  403. data/src/core/lib/gpr/sync_posix.cc +23 -21
  404. data/src/core/lib/gpr/sync_windows.cc +29 -27
  405. data/src/core/lib/gpr/time.cc +23 -21
  406. data/src/core/lib/gpr/time_posix.cc +35 -30
  407. data/src/core/lib/gpr/time_precise.cc +22 -22
  408. data/src/core/lib/gpr/time_precise.h +18 -19
  409. data/src/core/lib/gpr/time_windows.cc +25 -22
  410. data/src/core/lib/gpr/tmpfile.h +22 -22
  411. data/src/core/lib/gpr/tmpfile_msys.cc +21 -20
  412. data/src/core/lib/gpr/tmpfile_posix.cc +19 -18
  413. data/src/core/lib/gpr/tmpfile_windows.cc +23 -22
  414. data/src/core/lib/gpr/useful.h +40 -27
  415. data/src/core/lib/gpr/wrap_memcpy.cc +23 -23
  416. data/src/core/lib/gprpp/atomic_utils.h +18 -18
  417. data/src/core/lib/gprpp/bitset.h +24 -0
  418. data/src/core/{ext/filters/http/message_compress/message_decompress_filter.h → lib/gprpp/crash.cc} +15 -14
  419. data/src/core/lib/gprpp/crash.h +34 -0
  420. data/src/core/lib/gprpp/debug_location.h +18 -18
  421. data/src/core/lib/gprpp/dual_ref_counted.h +1 -1
  422. data/src/core/lib/gprpp/env.h +20 -20
  423. data/src/core/lib/gprpp/env_linux.cc +21 -21
  424. data/src/core/lib/gprpp/env_posix.cc +18 -18
  425. data/src/core/lib/gprpp/env_windows.cc +18 -18
  426. data/src/core/lib/gprpp/examine_stack.cc +17 -17
  427. data/src/core/lib/gprpp/examine_stack.h +18 -18
  428. data/src/core/lib/gprpp/fork.cc +21 -22
  429. data/src/core/lib/gprpp/fork.h +22 -22
  430. data/src/core/lib/gprpp/global_config.h +18 -18
  431. data/src/core/lib/gprpp/global_config_custom.h +18 -18
  432. data/src/core/lib/gprpp/global_config_env.cc +17 -17
  433. data/src/core/lib/gprpp/global_config_env.h +23 -23
  434. data/src/core/lib/gprpp/global_config_generic.h +18 -18
  435. data/src/core/lib/gprpp/host_port.cc +26 -26
  436. data/src/core/lib/gprpp/host_port.h +29 -28
  437. data/src/core/lib/gprpp/manual_constructor.h +18 -17
  438. data/src/core/lib/gprpp/memory.h +18 -18
  439. data/src/core/lib/gprpp/mpscq.cc +17 -17
  440. data/src/core/lib/gprpp/mpscq.h +18 -18
  441. data/src/core/lib/gprpp/no_destruct.h +1 -0
  442. data/src/core/lib/gprpp/orphanable.h +18 -18
  443. data/src/core/lib/gprpp/ref_counted.h +18 -18
  444. data/src/core/lib/gprpp/ref_counted_ptr.h +19 -18
  445. data/src/core/lib/gprpp/stat_windows.cc +1 -0
  446. data/src/core/lib/gprpp/status_helper.cc +4 -3
  447. data/src/core/lib/gprpp/sync.h +20 -20
  448. data/src/core/lib/gprpp/table.h +1 -0
  449. data/src/core/lib/gprpp/thd.h +19 -19
  450. data/src/core/lib/gprpp/thd_posix.cc +30 -31
  451. data/src/core/lib/gprpp/thd_windows.cc +25 -24
  452. data/src/core/lib/gprpp/time.cc +13 -7
  453. data/src/core/lib/gprpp/time.h +0 -1
  454. data/src/core/lib/gprpp/time_averaged_stats.cc +20 -20
  455. data/src/core/lib/gprpp/time_averaged_stats.h +48 -48
  456. data/src/core/lib/gprpp/time_util.h +1 -1
  457. data/src/core/lib/gprpp/unique_type_name.h +18 -18
  458. data/src/core/lib/handshaker/proxy_mapper.h +18 -18
  459. data/src/core/lib/handshaker/proxy_mapper_registry.cc +17 -17
  460. data/src/core/lib/handshaker/proxy_mapper_registry.h +18 -18
  461. data/src/core/lib/http/format_request.cc +18 -18
  462. data/src/core/lib/http/format_request.h +18 -18
  463. data/src/core/lib/http/httpcli.cc +17 -17
  464. data/src/core/lib/http/httpcli.h +20 -21
  465. data/src/core/lib/http/httpcli_security_connector.cc +18 -19
  466. data/src/core/lib/http/parser.cc +22 -22
  467. data/src/core/lib/http/parser.h +32 -32
  468. data/src/core/lib/iomgr/block_annotate.h +21 -21
  469. data/src/core/lib/iomgr/buffer_list.cc +52 -21
  470. data/src/core/lib/iomgr/buffer_list.h +63 -57
  471. data/src/core/lib/iomgr/call_combiner.cc +18 -17
  472. data/src/core/lib/iomgr/call_combiner.h +18 -18
  473. data/src/core/lib/iomgr/cfstream_handle.cc +20 -20
  474. data/src/core/lib/iomgr/cfstream_handle.h +22 -22
  475. data/src/core/lib/iomgr/closure.h +42 -41
  476. data/src/core/lib/iomgr/combiner.cc +18 -17
  477. data/src/core/lib/iomgr/combiner.h +18 -18
  478. data/src/core/lib/iomgr/dualstack_socket_posix.cc +21 -21
  479. data/src/core/lib/iomgr/dynamic_annotations.h +20 -20
  480. data/src/core/lib/iomgr/endpoint.cc +17 -17
  481. data/src/core/lib/iomgr/endpoint.h +46 -46
  482. data/src/core/lib/iomgr/endpoint_cfstream.cc +18 -18
  483. data/src/core/lib/iomgr/endpoint_cfstream.h +27 -27
  484. data/src/core/lib/iomgr/endpoint_pair.h +18 -18
  485. data/src/core/lib/iomgr/endpoint_pair_posix.cc +18 -17
  486. data/src/core/lib/iomgr/endpoint_pair_windows.cc +18 -17
  487. data/src/core/lib/iomgr/error.cc +22 -19
  488. data/src/core/lib/iomgr/error.h +20 -21
  489. data/src/core/lib/iomgr/error_cfstream.cc +18 -18
  490. data/src/core/lib/iomgr/error_cfstream.h +19 -19
  491. data/src/core/lib/iomgr/ev_apple.cc +17 -17
  492. data/src/core/lib/iomgr/ev_apple.h +17 -17
  493. data/src/core/lib/iomgr/ev_epoll1_linux.cc +182 -170
  494. data/src/core/lib/iomgr/ev_epoll1_linux.h +18 -18
  495. data/src/core/lib/iomgr/ev_poll_posix.cc +185 -174
  496. data/src/core/lib/iomgr/ev_poll_posix.h +18 -18
  497. data/src/core/lib/iomgr/ev_posix.cc +36 -28
  498. data/src/core/lib/iomgr/ev_posix.h +85 -81
  499. data/src/core/lib/iomgr/ev_windows.cc +18 -18
  500. data/src/core/lib/iomgr/exec_ctx.cc +31 -30
  501. data/src/core/lib/iomgr/exec_ctx.h +139 -138
  502. data/src/core/lib/iomgr/executor.cc +20 -19
  503. data/src/core/lib/iomgr/executor.h +24 -24
  504. data/src/core/lib/iomgr/fork_posix.cc +24 -22
  505. data/src/core/lib/iomgr/fork_windows.cc +21 -21
  506. data/src/core/lib/iomgr/gethostname.h +18 -18
  507. data/src/core/lib/iomgr/gethostname_fallback.cc +17 -17
  508. data/src/core/lib/iomgr/gethostname_host_name_max.cc +17 -17
  509. data/src/core/lib/iomgr/gethostname_sysconf.cc +17 -17
  510. data/src/core/lib/iomgr/grpc_if_nametoindex.h +20 -20
  511. data/src/core/lib/iomgr/grpc_if_nametoindex_posix.cc +20 -19
  512. data/src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc +20 -19
  513. data/src/core/lib/iomgr/internal_errqueue.cc +1 -1
  514. data/src/core/lib/iomgr/internal_errqueue.h +80 -80
  515. data/src/core/lib/iomgr/iocp_windows.cc +21 -21
  516. data/src/core/lib/iomgr/iocp_windows.h +18 -18
  517. data/src/core/lib/iomgr/iomgr.cc +19 -18
  518. data/src/core/lib/iomgr/iomgr.h +32 -32
  519. data/src/core/lib/iomgr/iomgr_internal.cc +17 -17
  520. data/src/core/lib/iomgr/iomgr_internal.h +25 -25
  521. data/src/core/lib/iomgr/iomgr_posix.cc +18 -18
  522. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +18 -18
  523. data/src/core/lib/iomgr/iomgr_windows.cc +22 -21
  524. data/src/core/lib/iomgr/load_file.cc +19 -18
  525. data/src/core/lib/iomgr/load_file.h +20 -20
  526. data/src/core/lib/iomgr/lockfree_event.cc +104 -104
  527. data/src/core/lib/iomgr/lockfree_event.h +19 -19
  528. data/src/core/lib/iomgr/nameser.h +84 -84
  529. data/src/core/lib/iomgr/polling_entity.cc +25 -21
  530. data/src/core/lib/iomgr/polling_entity.h +27 -27
  531. data/src/core/lib/iomgr/pollset.cc +17 -17
  532. data/src/core/lib/iomgr/pollset.h +51 -51
  533. data/src/core/lib/iomgr/pollset_set.cc +17 -17
  534. data/src/core/lib/iomgr/pollset_set.h +22 -22
  535. data/src/core/lib/iomgr/pollset_set_windows.cc +18 -18
  536. data/src/core/lib/iomgr/pollset_set_windows.h +18 -18
  537. data/src/core/lib/iomgr/pollset_windows.cc +26 -25
  538. data/src/core/lib/iomgr/pollset_windows.h +22 -22
  539. data/src/core/lib/iomgr/port.h +29 -29
  540. data/src/core/lib/iomgr/python_util.h +18 -18
  541. data/src/core/lib/iomgr/resolve_address.cc +18 -17
  542. data/src/core/lib/iomgr/resolve_address.h +18 -18
  543. data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
  544. data/src/core/lib/iomgr/resolve_address_posix.cc +21 -20
  545. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -3
  546. data/src/core/lib/iomgr/resolved_address.h +1 -1
  547. data/src/core/lib/iomgr/sockaddr.h +21 -21
  548. data/src/core/lib/iomgr/sockaddr_posix.h +18 -18
  549. data/src/core/lib/iomgr/sockaddr_utils_posix.cc +18 -17
  550. data/src/core/lib/iomgr/sockaddr_windows.h +18 -18
  551. data/src/core/lib/iomgr/socket_factory_posix.cc +18 -18
  552. data/src/core/lib/iomgr/socket_factory_posix.h +30 -30
  553. data/src/core/lib/iomgr/socket_mutator.cc +19 -18
  554. data/src/core/lib/iomgr/socket_mutator.h +37 -37
  555. data/src/core/lib/iomgr/socket_utils.h +24 -24
  556. data/src/core/lib/iomgr/socket_utils_common_posix.cc +38 -37
  557. data/src/core/lib/iomgr/socket_utils_linux.cc +18 -17
  558. data/src/core/lib/iomgr/socket_utils_posix.cc +21 -20
  559. data/src/core/lib/iomgr/socket_utils_posix.h +76 -76
  560. data/src/core/lib/iomgr/socket_utils_windows.cc +20 -19
  561. data/src/core/lib/iomgr/socket_windows.cc +35 -34
  562. data/src/core/lib/iomgr/socket_windows.h +56 -56
  563. data/src/core/lib/iomgr/systemd_utils.cc +116 -0
  564. data/src/core/lib/iomgr/systemd_utils.h +33 -0
  565. data/src/core/lib/iomgr/tcp_client.cc +17 -17
  566. data/src/core/lib/iomgr/tcp_client.h +26 -26
  567. data/src/core/lib/iomgr/tcp_client_cfstream.cc +19 -18
  568. data/src/core/lib/iomgr/tcp_client_posix.cc +39 -38
  569. data/src/core/lib/iomgr/tcp_client_posix.h +43 -43
  570. data/src/core/lib/iomgr/tcp_client_windows.cc +28 -27
  571. data/src/core/lib/iomgr/tcp_posix.cc +136 -134
  572. data/src/core/lib/iomgr/tcp_posix.h +27 -27
  573. data/src/core/lib/iomgr/tcp_server.cc +30 -22
  574. data/src/core/lib/iomgr/tcp_server.h +68 -62
  575. data/src/core/lib/iomgr/tcp_server_posix.cc +91 -61
  576. data/src/core/lib/iomgr/tcp_server_utils_posix.h +54 -51
  577. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +72 -34
  578. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +28 -27
  579. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +18 -18
  580. data/src/core/lib/iomgr/tcp_server_windows.cc +71 -75
  581. data/src/core/lib/iomgr/tcp_windows.cc +83 -60
  582. data/src/core/lib/iomgr/tcp_windows.h +29 -29
  583. data/src/core/lib/iomgr/timer.cc +17 -17
  584. data/src/core/lib/iomgr/timer.h +65 -65
  585. data/src/core/lib/iomgr/timer_generic.cc +106 -107
  586. data/src/core/lib/iomgr/timer_generic.h +19 -19
  587. data/src/core/lib/iomgr/timer_heap.cc +25 -25
  588. data/src/core/lib/iomgr/timer_heap.h +19 -19
  589. data/src/core/lib/iomgr/timer_manager.cc +30 -29
  590. data/src/core/lib/iomgr/timer_manager.h +25 -25
  591. data/src/core/lib/iomgr/unix_sockets_posix.cc +18 -17
  592. data/src/core/lib/iomgr/unix_sockets_posix.h +18 -18
  593. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +19 -17
  594. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +19 -18
  595. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +23 -23
  596. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +19 -18
  597. data/src/core/lib/iomgr/wakeup_fd_pipe.h +18 -18
  598. data/src/core/lib/iomgr/wakeup_fd_posix.cc +18 -18
  599. data/src/core/lib/iomgr/wakeup_fd_posix.h +50 -50
  600. data/src/core/lib/json/json_object_loader.cc +10 -0
  601. data/src/core/lib/json/json_object_loader.h +15 -1
  602. data/src/core/lib/json/json_reader.cc +28 -28
  603. data/src/core/lib/json/json_writer.cc +56 -56
  604. data/src/core/lib/load_balancing/lb_policy.cc +17 -17
  605. data/src/core/lib/load_balancing/lb_policy.h +3 -4
  606. data/src/core/lib/load_balancing/subchannel_interface.h +1 -1
  607. data/src/core/lib/matchers/matchers.cc +3 -1
  608. data/src/core/lib/matchers/matchers.h +1 -1
  609. data/src/core/lib/promise/activity.h +20 -12
  610. data/src/core/lib/promise/arena_promise.h +2 -1
  611. data/src/core/lib/promise/context.h +1 -0
  612. data/src/core/lib/promise/detail/promise_factory.h +1 -0
  613. data/src/core/lib/promise/detail/switch.h +18 -18
  614. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +18 -12
  615. data/src/core/lib/promise/for_each.h +68 -42
  616. data/src/core/lib/promise/latch.h +13 -19
  617. data/src/core/lib/promise/map.h +1 -0
  618. data/src/core/lib/promise/map_pipe.h +1 -0
  619. data/src/core/lib/promise/poll.h +6 -0
  620. data/src/core/lib/promise/seq.h +1 -0
  621. data/src/core/lib/promise/try_concurrently.h +1 -0
  622. data/src/core/lib/promise/try_seq.h +1 -0
  623. data/src/core/lib/resolver/resolver.cc +17 -17
  624. data/src/core/lib/resolver/server_address.cc +17 -17
  625. data/src/core/lib/resolver/server_address.h +18 -18
  626. data/src/core/lib/resource_quota/api.h +1 -1
  627. data/src/core/lib/resource_quota/arena.cc +17 -17
  628. data/src/core/lib/resource_quota/arena.h +18 -18
  629. data/src/core/lib/resource_quota/memory_quota.cc +139 -43
  630. data/src/core/lib/resource_quota/memory_quota.h +85 -23
  631. data/src/core/lib/resource_quota/resource_quota.h +1 -1
  632. data/src/core/lib/security/authorization/authorization_policy_provider.h +1 -1
  633. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +0 -1
  634. data/src/core/lib/security/authorization/rbac_policy.h +1 -1
  635. data/src/core/lib/security/context/security_context.cc +22 -23
  636. data/src/core/lib/security/context/security_context.h +30 -30
  637. data/src/core/lib/security/credentials/alts/alts_credentials.cc +17 -17
  638. data/src/core/lib/security/credentials/alts/alts_credentials.h +50 -50
  639. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +19 -19
  640. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +41 -41
  641. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +17 -17
  642. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +18 -17
  643. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +18 -17
  644. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +19 -19
  645. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +18 -18
  646. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +36 -37
  647. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +18 -18
  648. data/src/core/lib/security/credentials/call_creds_util.h +1 -1
  649. data/src/core/lib/security/credentials/composite/composite_credentials.cc +21 -21
  650. data/src/core/lib/security/credentials/composite/composite_credentials.h +20 -21
  651. data/src/core/lib/security/credentials/credentials.cc +19 -18
  652. data/src/core/lib/security/credentials/credentials.h +34 -33
  653. data/src/core/lib/security/credentials/fake/fake_credentials.cc +19 -19
  654. data/src/core/lib/security/credentials/fake/fake_credentials.h +34 -35
  655. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +17 -17
  656. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +48 -49
  657. data/src/core/lib/security/credentials/google_default/google_default_credentials.h +18 -19
  658. data/src/core/lib/security/credentials/iam/iam_credentials.cc +17 -17
  659. data/src/core/lib/security/credentials/iam/iam_credentials.h +18 -18
  660. data/src/core/lib/security/credentials/jwt/json_token.cc +23 -23
  661. data/src/core/lib/security/credentials/jwt/json_token.h +32 -32
  662. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +17 -17
  663. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +18 -19
  664. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +70 -70
  665. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +43 -43
  666. data/src/core/lib/security/credentials/local/local_credentials.cc +17 -17
  667. data/src/core/lib/security/credentials/local/local_credentials.h +20 -20
  668. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +28 -29
  669. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +19 -19
  670. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +18 -18
  671. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +19 -19
  672. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +19 -20
  673. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +18 -18
  674. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -1
  675. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +1 -2
  676. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +18 -18
  677. data/src/core/lib/security/credentials/tls/tls_credentials.cc +18 -19
  678. data/src/core/lib/security/credentials/tls/tls_credentials.h +18 -18
  679. data/src/core/lib/security/credentials/xds/xds_credentials.cc +1 -2
  680. data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
  681. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +26 -27
  682. data/src/core/lib/security/security_connector/alts/alts_security_connector.h +41 -42
  683. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +24 -26
  684. data/src/core/lib/security/security_connector/fake/fake_security_connector.h +20 -21
  685. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +1 -2
  686. data/src/core/lib/security/security_connector/load_system_roots.h +18 -18
  687. data/src/core/lib/security/security_connector/load_system_roots_fallback.cc +18 -18
  688. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +18 -18
  689. data/src/core/lib/security/security_connector/load_system_roots_supported.h +19 -20
  690. data/src/core/lib/security/security_connector/local/local_security_connector.cc +23 -23
  691. data/src/core/lib/security/security_connector/local/local_security_connector.h +40 -41
  692. data/src/core/lib/security/security_connector/security_connector.cc +17 -17
  693. data/src/core/lib/security/security_connector/security_connector.h +32 -33
  694. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +25 -25
  695. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +38 -39
  696. data/src/core/lib/security/security_connector/ssl_utils.cc +32 -32
  697. data/src/core/lib/security/security_connector/ssl_utils.h +31 -31
  698. data/src/core/lib/security/security_connector/ssl_utils_config.cc +22 -22
  699. data/src/core/lib/security/security_connector/ssl_utils_config.h +18 -19
  700. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -21
  701. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +17 -17
  702. data/src/core/lib/security/transport/auth_filters.h +18 -18
  703. data/src/core/lib/security/transport/client_auth_filter.cc +20 -20
  704. data/src/core/lib/security/transport/secure_endpoint.cc +28 -28
  705. data/src/core/lib/security/transport/secure_endpoint.h +22 -22
  706. data/src/core/lib/security/transport/security_handshaker.cc +17 -17
  707. data/src/core/lib/security/transport/security_handshaker.h +19 -19
  708. data/src/core/lib/security/transport/server_auth_filter.cc +22 -23
  709. data/src/core/lib/security/transport/tsi_error.cc +17 -17
  710. data/src/core/lib/security/transport/tsi_error.h +18 -18
  711. data/src/core/lib/security/util/json_util.cc +17 -17
  712. data/src/core/lib/security/util/json_util.h +18 -18
  713. data/src/core/lib/service_config/service_config.h +1 -1
  714. data/src/core/lib/service_config/service_config_call_data.h +7 -1
  715. data/src/core/lib/slice/b64.cc +24 -24
  716. data/src/core/lib/slice/b64.h +29 -29
  717. data/src/core/lib/slice/percent_encoding.cc +17 -17
  718. data/src/core/lib/slice/percent_encoding.h +24 -24
  719. data/src/core/lib/slice/slice.cc +37 -37
  720. data/src/core/lib/slice/slice.h +38 -5
  721. data/src/core/lib/slice/slice_buffer.cc +50 -45
  722. data/src/core/lib/slice/slice_buffer.h +27 -2
  723. data/src/core/lib/slice/slice_internal.h +18 -18
  724. data/src/core/lib/slice/slice_string_helpers.cc +17 -17
  725. data/src/core/lib/slice/slice_string_helpers.h +19 -19
  726. data/src/core/lib/surface/api_trace.cc +17 -17
  727. data/src/core/lib/surface/api_trace.h +22 -22
  728. data/src/core/lib/surface/byte_buffer.cc +19 -19
  729. data/src/core/lib/surface/byte_buffer_reader.cc +19 -19
  730. data/src/core/lib/surface/call.cc +163 -104
  731. data/src/core/lib/surface/call.h +42 -39
  732. data/src/core/lib/surface/call_details.cc +17 -18
  733. data/src/core/lib/surface/call_log_batch.cc +18 -18
  734. data/src/core/lib/surface/call_test_only.h +30 -30
  735. data/src/core/lib/surface/call_trace.cc +5 -5
  736. data/src/core/lib/surface/channel.cc +18 -18
  737. data/src/core/lib/surface/channel.h +31 -31
  738. data/src/core/lib/surface/channel_init.cc +17 -17
  739. data/src/core/lib/surface/channel_init.h +18 -18
  740. data/src/core/lib/surface/channel_ping.cc +18 -18
  741. data/src/core/lib/surface/channel_stack_type.cc +17 -17
  742. data/src/core/lib/surface/channel_stack_type.h +18 -18
  743. data/src/core/lib/surface/completion_queue.cc +136 -140
  744. data/src/core/lib/surface/completion_queue.h +32 -32
  745. data/src/core/lib/surface/completion_queue_factory.cc +28 -28
  746. data/src/core/lib/surface/completion_queue_factory.h +20 -20
  747. data/src/core/lib/surface/event_string.cc +17 -17
  748. data/src/core/lib/surface/event_string.h +20 -20
  749. data/src/core/lib/surface/init.cc +21 -19
  750. data/src/core/lib/surface/init.h +18 -18
  751. data/src/core/lib/surface/init_internally.cc +1 -0
  752. data/src/core/lib/surface/init_internally.h +1 -0
  753. data/src/core/lib/surface/lame_client.cc +18 -18
  754. data/src/core/lib/surface/lame_client.h +19 -19
  755. data/src/core/lib/surface/metadata_array.cc +17 -18
  756. data/src/core/lib/surface/server.cc +15 -15
  757. data/src/core/lib/surface/server.h +2 -3
  758. data/src/core/lib/surface/validate_metadata.cc +17 -17
  759. data/src/core/lib/surface/validate_metadata.h +18 -18
  760. data/src/core/lib/surface/version.cc +21 -21
  761. data/src/core/lib/transport/bdp_estimator.cc +17 -17
  762. data/src/core/lib/transport/bdp_estimator.h +18 -19
  763. data/src/core/lib/transport/connectivity_state.cc +17 -17
  764. data/src/core/lib/transport/connectivity_state.h +19 -19
  765. data/src/core/lib/transport/error_utils.cc +17 -17
  766. data/src/core/lib/transport/error_utils.h +18 -18
  767. data/src/core/lib/transport/handshaker.cc +37 -34
  768. data/src/core/lib/transport/handshaker.h +42 -37
  769. data/src/core/lib/transport/handshaker_factory.h +18 -18
  770. data/src/core/lib/transport/handshaker_registry.cc +17 -17
  771. data/src/core/lib/transport/handshaker_registry.h +18 -18
  772. data/src/core/lib/transport/http2_errors.h +20 -20
  773. data/src/core/lib/transport/http_connect_handshaker.cc +17 -17
  774. data/src/core/lib/transport/http_connect_handshaker.h +18 -18
  775. data/src/core/lib/transport/metadata_batch.cc +4 -1
  776. data/src/core/lib/transport/metadata_batch.h +30 -20
  777. data/src/core/lib/transport/parsed_metadata.h +1 -0
  778. data/src/core/lib/transport/pid_controller.cc +20 -20
  779. data/src/core/lib/transport/pid_controller.h +24 -24
  780. data/src/core/lib/transport/status_conversion.cc +22 -22
  781. data/src/core/lib/transport/status_conversion.h +20 -20
  782. data/src/core/lib/transport/tcp_connect_handshaker.h +1 -1
  783. data/src/core/lib/transport/timeout_encoding.cc +22 -22
  784. data/src/core/lib/transport/timeout_encoding.h +18 -18
  785. data/src/core/lib/transport/transport.cc +25 -24
  786. data/src/core/lib/transport/transport.h +134 -132
  787. data/src/core/lib/transport/transport_impl.h +41 -41
  788. data/src/core/lib/transport/transport_op_string.cc +19 -19
  789. data/src/core/plugin_registry/grpc_plugin_registry.cc +21 -19
  790. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +5 -0
  791. data/src/core/tsi/alts/crypt/aes_gcm.cc +20 -20
  792. data/src/core/tsi/alts/crypt/gsec.cc +26 -26
  793. data/src/core/tsi/alts/crypt/gsec.h +334 -334
  794. data/src/core/tsi/alts/frame_protector/alts_counter.cc +23 -23
  795. data/src/core/tsi/alts/frame_protector/alts_counter.h +66 -66
  796. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +19 -19
  797. data/src/core/tsi/alts/frame_protector/alts_crypter.h +206 -206
  798. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +72 -71
  799. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +38 -38
  800. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +18 -18
  801. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +80 -81
  802. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +22 -22
  803. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +22 -22
  804. data/src/core/tsi/alts/frame_protector/frame_handler.cc +26 -25
  805. data/src/core/tsi/alts/frame_protector/frame_handler.h +166 -166
  806. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +68 -67
  807. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +99 -99
  808. data/src/core/tsi/alts/handshaker/alts_shared_resource.cc +18 -17
  809. data/src/core/tsi/alts/handshaker/alts_shared_resource.h +41 -42
  810. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +29 -28
  811. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +58 -58
  812. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +20 -20
  813. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +19 -19
  814. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +36 -36
  815. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +19 -19
  816. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +102 -101
  817. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +38 -37
  818. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +38 -39
  819. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +31 -30
  820. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +33 -34
  821. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +65 -66
  822. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +31 -30
  823. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +53 -54
  824. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +54 -53
  825. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +138 -139
  826. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +53 -52
  827. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +41 -42
  828. data/src/core/tsi/fake_transport_security.cc +77 -76
  829. data/src/core/tsi/fake_transport_security.h +30 -30
  830. data/src/core/tsi/local_transport_security.cc +34 -33
  831. data/src/core/tsi/local_transport_security.h +31 -31
  832. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +1 -0
  833. data/src/core/tsi/ssl/session_cache/ssl_session.h +18 -18
  834. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +18 -18
  835. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +18 -17
  836. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +19 -19
  837. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +19 -18
  838. data/src/core/tsi/ssl_transport_security.cc +139 -323
  839. data/src/core/tsi/ssl_transport_security.h +201 -200
  840. data/src/core/tsi/ssl_transport_security_utils.cc +250 -0
  841. data/src/core/tsi/ssl_transport_security_utils.h +147 -0
  842. data/src/core/tsi/ssl_types.h +25 -25
  843. data/src/core/tsi/transport_security.cc +26 -26
  844. data/src/core/tsi/transport_security.h +45 -45
  845. data/src/core/tsi/transport_security_grpc.cc +20 -20
  846. data/src/core/tsi/transport_security_grpc.h +39 -39
  847. data/src/core/tsi/transport_security_interface.h +330 -330
  848. data/src/ruby/ext/grpc/{ext-export-truffleruby.clang → ext-export-truffleruby-with-ruby-abi-version.clang} +0 -0
  849. data/src/ruby/ext/grpc/{ext-export-truffleruby.gcc → ext-export-truffleruby-with-ruby-abi-version.gcc} +0 -0
  850. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.clang +2 -0
  851. data/src/ruby/ext/grpc/ext-export-with-ruby-abi-version.gcc +7 -0
  852. data/src/ruby/ext/grpc/ext-export.clang +0 -1
  853. data/src/ruby/ext/grpc/ext-export.gcc +1 -2
  854. data/src/ruby/ext/grpc/extconf.rb +47 -2
  855. data/src/ruby/ext/grpc/rb_call.c +1 -0
  856. data/src/ruby/ext/grpc/rb_channel.c +1 -0
  857. data/src/ruby/ext/grpc/rb_channel_args.c +1 -0
  858. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  859. data/src/ruby/ext/grpc/rb_grpc.c +1 -0
  860. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +38 -36
  861. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +59 -56
  862. data/src/ruby/lib/grpc/generic/bidi_call.rb +2 -0
  863. data/src/ruby/lib/grpc/version.rb +1 -1
  864. data/src/ruby/spec/client_server_spec.rb +20 -8
  865. data/third_party/re2/re2/bitstate.cc +3 -3
  866. data/third_party/re2/re2/dfa.cc +13 -13
  867. data/third_party/re2/re2/nfa.cc +4 -4
  868. data/third_party/re2/re2/onepass.cc +2 -2
  869. data/third_party/re2/re2/prefilter_tree.cc +27 -59
  870. data/third_party/re2/re2/prefilter_tree.h +3 -2
  871. data/third_party/re2/re2/prog.cc +11 -2
  872. data/third_party/re2/re2/prog.h +17 -5
  873. data/third_party/re2/re2/re2.cc +6 -11
  874. data/third_party/re2/re2/re2.h +1 -1
  875. data/third_party/re2/re2/regexp.cc +1 -2
  876. data/third_party/re2/re2/stringpiece.h +10 -7
  877. data/third_party/re2/re2/unicode_casefold.cc +25 -11
  878. data/third_party/re2/re2/unicode_groups.cc +319 -151
  879. data/third_party/re2/re2/walker-inl.h +3 -2
  880. data/third_party/re2/util/mutex.h +4 -4
  881. metadata +93 -24
  882. data/include/grpc/impl/codegen/gpr_slice.h +0 -71
  883. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +0 -332
  884. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -52
  885. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +0 -322
  886. data/src/core/ext/filters/server_config_selector/server_config_selector.cc +0 -62
@@ -19,6 +19,772 @@
19
19
  #ifndef GRPC_SUPPORT_PORT_PLATFORM_H
20
20
  #define GRPC_SUPPORT_PORT_PLATFORM_H
21
21
 
22
- #include <grpc/impl/codegen/port_platform.h> // IWYU pragma: export
22
+ /*
23
+ * Define GPR_BACKWARDS_COMPATIBILITY_MODE to try harder to be ABI
24
+ * compatible with older platforms (currently only on Linux)
25
+ * Causes:
26
+ * - some libc calls to be gotten via dlsym
27
+ * - some syscalls to be made directly
28
+ */
29
+
30
+ // [[deprecated]] attribute is only available since C++14
31
+ #if __cplusplus >= 201402L
32
+ #define GRPC_DEPRECATED(reason) [[deprecated(reason)]]
33
+ #else
34
+ #define GRPC_DEPRECATED(reason)
35
+ #endif // __cplusplus >= 201402L
36
+
37
+ /*
38
+ * Defines GPR_ABSEIL_SYNC to use synchronization features from Abseil
39
+ */
40
+ #ifndef GPR_ABSEIL_SYNC
41
+ #if defined(__APPLE__)
42
+ // This is disabled on Apple platforms because macos/grpc_basictests_c_cpp
43
+ // fails with this. https://github.com/grpc/grpc/issues/23661
44
+ #else
45
+ #define GPR_ABSEIL_SYNC 1
46
+ #endif
47
+ #endif // GPR_ABSEIL_SYNC
48
+
49
+ /* Get windows.h included everywhere (we need it) */
50
+ #if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
51
+ #ifndef WIN32_LEAN_AND_MEAN
52
+ #define GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED
53
+ #define WIN32_LEAN_AND_MEAN
54
+ #endif /* WIN32_LEAN_AND_MEAN */
55
+
56
+ #ifndef NOMINMAX
57
+ #define GRPC_NOMINMX_WAS_NOT_DEFINED
58
+ #define NOMINMAX
59
+ #endif /* NOMINMAX */
60
+
61
+ #include <windows.h>
62
+
63
+ #ifndef _WIN32_WINNT
64
+ #error \
65
+ "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)"
66
+ #else /* !defined(_WIN32_WINNT) */
67
+ #if (_WIN32_WINNT < 0x0600)
68
+ #error \
69
+ "Please compile grpc with _WIN32_WINNT of at least 0x600 (aka Windows Vista)"
70
+ #endif /* _WIN32_WINNT < 0x0600 */
71
+ #endif /* defined(_WIN32_WINNT) */
72
+
73
+ #ifdef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED
74
+ #undef GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED
75
+ #undef WIN32_LEAN_AND_MEAN
76
+ #endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */
77
+
78
+ #ifdef GRPC_NOMINMAX_WAS_NOT_DEFINED
79
+ #undef GRPC_NOMINMAX_WAS_NOT_DEFINED
80
+ #undef NOMINMAX
81
+ #endif /* GRPC_WIN32_LEAN_AND_MEAN_WAS_NOT_DEFINED */
82
+ #endif /* defined(_WIN64) || defined(WIN64) || defined(_WIN32) || \
83
+ defined(WIN32) */
84
+
85
+ /* Override this file with one for your platform if you need to redefine
86
+ things. */
87
+
88
+ #if !defined(GPR_NO_AUTODETECT_PLATFORM)
89
+ #if defined(_WIN64) || defined(WIN64) || defined(_WIN32) || defined(WIN32)
90
+ #if defined(_WIN64) || defined(WIN64)
91
+ #define GPR_ARCH_64 1
92
+ #else
93
+ #define GPR_ARCH_32 1
94
+ #endif
95
+ #define GPR_PLATFORM_STRING "windows"
96
+ #define GPR_WINDOWS 1
97
+ #define GPR_WINDOWS_SUBPROCESS 1
98
+ #define GPR_WINDOWS_ENV
99
+ #ifdef __MSYS__
100
+ #define GPR_GETPID_IN_UNISTD_H 1
101
+ #define GPR_MSYS_TMPFILE
102
+ #define GPR_POSIX_LOG
103
+ #define GPR_POSIX_STRING
104
+ #define GPR_POSIX_TIME
105
+ #else
106
+ #define GPR_GETPID_IN_PROCESS_H 1
107
+ #define GPR_WINDOWS_TMPFILE
108
+ #define GPR_WINDOWS_LOG
109
+ #define GPR_WINDOWS_CRASH_HANDLER 1
110
+ #define GPR_WINDOWS_STAT
111
+ #define GPR_WINDOWS_STRING
112
+ #define GPR_WINDOWS_TIME
113
+ #endif
114
+ #ifdef __GNUC__
115
+ #define GPR_GCC_ATOMIC 1
116
+ #else
117
+ #define GPR_WINDOWS_ATOMIC 1
118
+ #endif
119
+ #elif defined(ANDROID) || defined(__ANDROID__)
120
+ #define GPR_PLATFORM_STRING "android"
121
+ #define GPR_ANDROID 1
122
+ #ifndef __ANDROID_API__
123
+ #error "__ANDROID_API__ must be defined for Android builds."
124
+ #endif
125
+ #if __ANDROID_API__ < 21
126
+ #error "Requires Android API v21 and above"
127
+ #endif
128
+ #define GPR_SUPPORT_BINDER_TRANSPORT 1
129
+ // TODO(apolcyn): re-evaluate support for c-ares
130
+ // on android after upgrading our c-ares dependency.
131
+ // See https://github.com/grpc/grpc/issues/18038.
132
+ #define GRPC_ARES 0
133
+ #ifdef _LP64
134
+ #define GPR_ARCH_64 1
135
+ #else /* _LP64 */
136
+ #define GPR_ARCH_32 1
137
+ #endif /* _LP64 */
138
+ #define GPR_CPU_POSIX 1
139
+ #define GPR_GCC_SYNC 1
140
+ #define GPR_POSIX_ENV 1
141
+ #define GPR_POSIX_TMPFILE 1
142
+ #define GPR_POSIX_STAT 1
143
+ #define GPR_ANDROID_LOG 1
144
+ #define GPR_POSIX_STRING 1
145
+ #define GPR_POSIX_SUBPROCESS 1
146
+ #define GPR_POSIX_SYNC 1
147
+ #define GPR_POSIX_TIME 1
148
+ #define GPR_HAS_PTHREAD_H 1
149
+ #define GPR_GETPID_IN_UNISTD_H 1
150
+ #define GPR_SUPPORT_CHANNELS_FROM_FD 1
151
+ #elif defined(__linux__)
152
+ #define GPR_PLATFORM_STRING "linux"
153
+ #ifndef _BSD_SOURCE
154
+ #define _BSD_SOURCE
155
+ #endif
156
+ #ifndef _DEFAULT_SOURCE
157
+ #define _DEFAULT_SOURCE
158
+ #endif
159
+ #ifndef _GNU_SOURCE
160
+ #define _GNU_SOURCE
161
+ #endif
162
+ #include <features.h>
163
+ #define GPR_CPU_LINUX 1
164
+ #define GPR_GCC_ATOMIC 1
165
+ #define GPR_LINUX 1
166
+ #define GPR_LINUX_LOG
167
+ #define GPR_SUPPORT_CHANNELS_FROM_FD 1
168
+ #define GPR_LINUX_ENV 1
169
+ #define GPR_POSIX_TMPFILE 1
170
+ #define GPR_POSIX_STAT 1
171
+ #define GPR_POSIX_STRING 1
172
+ #define GPR_POSIX_SUBPROCESS 1
173
+ #define GPR_POSIX_SYNC 1
174
+ #define GPR_POSIX_TIME 1
175
+ #define GPR_HAS_PTHREAD_H 1
176
+ #define GPR_GETPID_IN_UNISTD_H 1
177
+ #ifdef _LP64
178
+ #define GPR_ARCH_64 1
179
+ #else /* _LP64 */
180
+ #define GPR_ARCH_32 1
181
+ #endif /* _LP64 */
182
+ #ifdef __GLIBC__
183
+ #define GPR_POSIX_CRASH_HANDLER 1
184
+ #ifdef __GLIBC_PREREQ
185
+ #if __GLIBC_PREREQ(2, 12)
186
+ #define GPR_LINUX_PTHREAD_NAME 1
187
+ #endif
188
+ #else
189
+ // musl libc & others
190
+ #define GPR_LINUX_PTHREAD_NAME 1
191
+ #endif
192
+ #include <linux/version.h>
193
+ #else /* musl libc */
194
+ #define GPR_MUSL_LIBC_COMPAT 1
195
+ #endif
196
+ #elif defined(__ASYLO__)
197
+ #define GPR_ARCH_64 1
198
+ #define GPR_CPU_POSIX 1
199
+ #define GPR_PLATFORM_STRING "asylo"
200
+ #define GPR_GCC_SYNC 1
201
+ #define GPR_POSIX_STAT 1
202
+ #define GPR_POSIX_SYNC 1
203
+ #define GPR_POSIX_STRING 1
204
+ #define GPR_POSIX_LOG 1
205
+ #define GPR_POSIX_TIME 1
206
+ #define GPR_POSIX_ENV 1
207
+ #define GPR_ASYLO 1
208
+ #define GRPC_POSIX_SOCKET 1
209
+ #define GRPC_POSIX_SOCKETADDR
210
+ #define GRPC_POSIX_SOCKETUTILS 1
211
+ #define GRPC_TIMER_USE_GENERIC 1
212
+ #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
213
+ #define GRPC_POSIX_WAKEUP_FD 1
214
+ #define GRPC_HAVE_MSG_NOSIGNAL 1
215
+ #define GRPC_HAVE_UNIX_SOCKET 1
216
+ #define GRPC_ARES 0
217
+ #define GPR_NO_AUTODETECT_PLATFORM 1
218
+ #elif defined(__APPLE__)
219
+ #include <Availability.h>
220
+ #include <TargetConditionals.h>
221
+ #ifndef _BSD_SOURCE
222
+ #define _BSD_SOURCE
223
+ #endif
224
+ #if TARGET_OS_IPHONE
225
+ #define GPR_PLATFORM_STRING "ios"
226
+ #define GPR_CPU_IPHONE 1
227
+ #define GRPC_CFSTREAM 1
228
+ /* the c-ares resolver isn't safe to enable on iOS */
229
+ #define GRPC_ARES 0
230
+ #else /* TARGET_OS_IPHONE */
231
+ #define GPR_PLATFORM_STRING "osx"
232
+ #define GPR_CPU_POSIX 1
233
+ #define GPR_POSIX_CRASH_HANDLER 1
234
+ #endif
235
+ #define GPR_APPLE 1
236
+ #define GPR_GCC_ATOMIC 1
237
+ #define GPR_POSIX_LOG 1
238
+ #define GPR_POSIX_ENV 1
239
+ #define GPR_POSIX_TMPFILE 1
240
+ #define GPR_POSIX_STAT 1
241
+ #define GPR_POSIX_STRING 1
242
+ #define GPR_POSIX_SUBPROCESS 1
243
+ #define GPR_POSIX_SYNC 1
244
+ #define GPR_POSIX_TIME 1
245
+ #define GPR_HAS_PTHREAD_H 1
246
+ #define GPR_GETPID_IN_UNISTD_H 1
247
+ #ifndef GRPC_CFSTREAM
248
+ #define GPR_SUPPORT_CHANNELS_FROM_FD 1
249
+ #endif
250
+ #ifdef _LP64
251
+ #define GPR_ARCH_64 1
252
+ #else /* _LP64 */
253
+ #define GPR_ARCH_32 1
254
+ #endif /* _LP64 */
255
+ #elif defined(__FreeBSD__)
256
+ #define GPR_PLATFORM_STRING "freebsd"
257
+ #ifndef _BSD_SOURCE
258
+ #define _BSD_SOURCE
259
+ #endif
260
+ #define GPR_FREEBSD 1
261
+ #define GPR_CPU_POSIX 1
262
+ #define GPR_GCC_ATOMIC 1
263
+ #define GPR_POSIX_LOG 1
264
+ #define GPR_POSIX_ENV 1
265
+ #define GPR_POSIX_TMPFILE 1
266
+ #define GPR_POSIX_STAT 1
267
+ #define GPR_POSIX_STRING 1
268
+ #define GPR_POSIX_SUBPROCESS 1
269
+ #define GPR_POSIX_SYNC 1
270
+ #define GPR_POSIX_TIME 1
271
+ #define GPR_HAS_PTHREAD_H 1
272
+ #define GPR_GETPID_IN_UNISTD_H 1
273
+ #define GPR_SUPPORT_CHANNELS_FROM_FD 1
274
+ #ifdef _LP64
275
+ #define GPR_ARCH_64 1
276
+ #else /* _LP64 */
277
+ #define GPR_ARCH_32 1
278
+ #endif /* _LP64 */
279
+ #elif defined(__OpenBSD__)
280
+ #define GPR_PLATFORM_STRING "openbsd"
281
+ #ifndef _BSD_SOURCE
282
+ #define _BSD_SOURCE
283
+ #endif
284
+ #define GPR_OPENBSD 1
285
+ #define GPR_CPU_POSIX 1
286
+ #define GPR_GCC_ATOMIC 1
287
+ #define GPR_POSIX_LOG 1
288
+ #define GPR_POSIX_ENV 1
289
+ #define GPR_POSIX_TMPFILE 1
290
+ #define GPR_POSIX_STAT 1
291
+ #define GPR_POSIX_STRING 1
292
+ #define GPR_POSIX_SUBPROCESS 1
293
+ #define GPR_POSIX_SYNC 1
294
+ #define GPR_POSIX_TIME 1
295
+ #define GPR_HAS_PTHREAD_H 1
296
+ #define GPR_GETPID_IN_UNISTD_H 1
297
+ #define GPR_SUPPORT_CHANNELS_FROM_FD 1
298
+ #ifdef _LP64
299
+ #define GPR_ARCH_64 1
300
+ #else /* _LP64 */
301
+ #define GPR_ARCH_32 1
302
+ #endif /* _LP64 */
303
+ #elif defined(__sun) && defined(__SVR4)
304
+ #define GPR_PLATFORM_STRING "solaris"
305
+ #define GPR_SOLARIS 1
306
+ #define GPR_CPU_POSIX 1
307
+ #define GPR_GCC_ATOMIC 1
308
+ #define GPR_POSIX_LOG 1
309
+ #define GPR_POSIX_ENV 1
310
+ #define GPR_POSIX_TMPFILE 1
311
+ #define GPR_POSIX_STAT 1
312
+ #define GPR_POSIX_STRING 1
313
+ #define GPR_POSIX_SUBPROCESS 1
314
+ #define GPR_POSIX_SYNC 1
315
+ #define GPR_POSIX_TIME 1
316
+ #define GPR_HAS_PTHREAD_H 1
317
+ #define GPR_GETPID_IN_UNISTD_H 1
318
+ #ifdef _LP64
319
+ #define GPR_ARCH_64 1
320
+ #else /* _LP64 */
321
+ #define GPR_ARCH_32 1
322
+ #endif /* _LP64 */
323
+ #elif defined(_AIX)
324
+ #define GPR_PLATFORM_STRING "aix"
325
+ #ifndef _ALL_SOURCE
326
+ #define _ALL_SOURCE
327
+ #endif
328
+ #define GPR_AIX 1
329
+ #define GPR_CPU_POSIX 1
330
+ #define GPR_GCC_ATOMIC 1
331
+ #define GPR_POSIX_LOG 1
332
+ #define GPR_POSIX_ENV 1
333
+ #define GPR_POSIX_TMPFILE 1
334
+ #define GPR_POSIX_STAT 1
335
+ #define GPR_POSIX_STRING 1
336
+ #define GPR_POSIX_SUBPROCESS 1
337
+ #define GPR_POSIX_SYNC 1
338
+ #define GPR_POSIX_TIME 1
339
+ #define GPR_HAS_PTHREAD_H 1
340
+ #define GPR_GETPID_IN_UNISTD_H 1
341
+ #ifdef _LP64
342
+ #define GPR_ARCH_64 1
343
+ #else /* _LP64 */
344
+ #define GPR_ARCH_32 1
345
+ #endif /* _LP64 */
346
+ #elif defined(__NetBSD__)
347
+ // NetBSD is a community-supported platform.
348
+ // Please contact Thomas Klausner <wiz@NetBSD.org> for support.
349
+ #define GPR_PLATFORM_STRING "netbsd"
350
+ #ifndef _BSD_SOURCE
351
+ #define _BSD_SOURCE
352
+ #endif
353
+ #define GPR_NETBSD 1
354
+ #define GPR_CPU_POSIX 1
355
+ #define GPR_GCC_ATOMIC 1
356
+ #define GPR_GCC_TLS 1
357
+ #define GPR_POSIX_LOG 1
358
+ #define GPR_POSIX_ENV 1
359
+ #define GPR_POSIX_TMPFILE 1
360
+ #define GPR_POSIX_STAT 1
361
+ #define GPR_POSIX_STRING 1
362
+ #define GPR_POSIX_SUBPROCESS 1
363
+ #define GPR_POSIX_SYNC 1
364
+ #define GPR_POSIX_TIME 1
365
+ #define GPR_GETPID_IN_UNISTD_H 1
366
+ #define GPR_SUPPORT_CHANNELS_FROM_FD 1
367
+ #ifdef _LP64
368
+ #define GPR_ARCH_64 1
369
+ #else /* _LP64 */
370
+ #define GPR_ARCH_32 1
371
+ #endif /* _LP64 */
372
+ #elif defined(__native_client__)
373
+ #define GPR_PLATFORM_STRING "nacl"
374
+ #ifndef _BSD_SOURCE
375
+ #define _BSD_SOURCE
376
+ #endif
377
+ #ifndef _DEFAULT_SOURCE
378
+ #define _DEFAULT_SOURCE
379
+ #endif
380
+ #ifndef _GNU_SOURCE
381
+ #define _GNU_SOURCE
382
+ #endif
383
+ #define GPR_NACL 1
384
+ #define GPR_CPU_POSIX 1
385
+ #define GPR_GCC_ATOMIC 1
386
+ #define GPR_POSIX_LOG 1
387
+ #define GPR_POSIX_ENV 1
388
+ #define GPR_POSIX_TMPFILE 1
389
+ #define GPR_POSIX_STAT 1
390
+ #define GPR_POSIX_STRING 1
391
+ #define GPR_POSIX_SUBPROCESS 1
392
+ #define GPR_POSIX_SYNC 1
393
+ #define GPR_POSIX_TIME 1
394
+ #define GPR_HAS_PTHREAD_H 1
395
+ #define GPR_GETPID_IN_UNISTD_H 1
396
+ #ifdef _LP64
397
+ #define GPR_ARCH_64 1
398
+ #else /* _LP64 */
399
+ #define GPR_ARCH_32 1
400
+ #endif /* _LP64 */
401
+ #elif defined(__Fuchsia__)
402
+ #define GRPC_ARES 0
403
+ #define GPR_FUCHSIA 1
404
+ #define GPR_ARCH_64 1
405
+ #define GPR_PLATFORM_STRING "fuchsia"
406
+ #include <features.h>
407
+ // Specifying musl libc affects wrap_memcpy.c. It causes memmove() to be
408
+ // invoked.
409
+ #define GPR_MUSL_LIBC_COMPAT 1
410
+ #define GPR_CPU_POSIX 1
411
+ #define GPR_GCC_ATOMIC 1
412
+ #define GPR_POSIX_LOG 1
413
+ #define GPR_POSIX_SYNC 1
414
+ #define GPR_POSIX_ENV 1
415
+ #define GPR_POSIX_TMPFILE 1
416
+ #define GPR_POSIX_STAT 1
417
+ #define GPR_POSIX_SUBPROCESS 1
418
+ #define GPR_POSIX_SYNC 1
419
+ #define GPR_POSIX_STRING 1
420
+ #define GPR_POSIX_TIME 1
421
+ #define GPR_HAS_PTHREAD_H 1
422
+ #define GPR_GETPID_IN_UNISTD_H 1
423
+ #define GRPC_ROOT_PEM_PATH "/config/ssl/cert.pem"
424
+ #elif defined(__HAIKU__)
425
+ #define GPR_PLATFORM_STRING "haiku"
426
+ // Haiku is a community-supported platform.
427
+ // Please contact Jerome Duval <jerome.duval@gmail.com> for support.
428
+ #ifndef _BSD_SOURCE
429
+ #define _BSD_SOURCE
430
+ #endif
431
+ #define GPR_HAIKU 1
432
+ #define GPR_CPU_POSIX 1
433
+ #define GPR_GCC_ATOMIC 1
434
+ #define GPR_POSIX_LOG 1
435
+ #define GPR_POSIX_ENV 1
436
+ #define GPR_POSIX_TMPFILE 1
437
+ #define GPR_POSIX_STAT 1
438
+ #define GPR_POSIX_STRING 1
439
+ #define GPR_POSIX_SUBPROCESS 1
440
+ #define GPR_POSIX_SYNC 1
441
+ #define GPR_POSIX_TIME 1
442
+ #define GPR_HAS_PTHREAD_H 1
443
+ #define GPR_GETPID_IN_UNISTD_H 1
444
+ #define GPR_SUPPORT_CHANNELS_FROM_FD 1
445
+ #ifdef _LP64
446
+ #define GPR_ARCH_64 1
447
+ #else /* _LP64 */
448
+ #define GPR_ARCH_32 1
449
+ #endif /* _LP64 */
450
+ #else
451
+ #error "Could not auto-detect platform"
452
+ #endif
453
+ #endif /* GPR_NO_AUTODETECT_PLATFORM */
454
+
455
+ #if defined(GPR_BACKWARDS_COMPATIBILITY_MODE)
456
+ /*
457
+ * For backward compatibility mode, reset _FORTIFY_SOURCE to prevent
458
+ * a library from having non-standard symbols such as __asprintf_chk.
459
+ * This helps non-glibc systems such as alpine using musl to find symbols.
460
+ */
461
+ #if defined(_FORTIFY_SOURCE) && _FORTIFY_SOURCE > 0
462
+ #undef _FORTIFY_SOURCE
463
+ #define _FORTIFY_SOURCE 0
464
+ #endif
465
+ #endif
466
+
467
+ #if defined(__has_include)
468
+ #if __has_include(<atomic>)
469
+ #define GRPC_HAS_CXX11_ATOMIC
470
+ #endif /* __has_include(<atomic>) */
471
+ #endif /* defined(__has_include) */
472
+
473
+ #ifndef GPR_PLATFORM_STRING
474
+ #warning "GPR_PLATFORM_STRING not auto-detected"
475
+ #define GPR_PLATFORM_STRING "unknown"
476
+ #endif
477
+
478
+ #ifdef GPR_GCOV
479
+ #undef GPR_FORBID_UNREACHABLE_CODE
480
+ #define GPR_FORBID_UNREACHABLE_CODE 1
481
+ #endif
482
+
483
+ #ifdef _MSC_VER
484
+ #if _MSC_VER < 1700
485
+ typedef __int8 int8_t;
486
+ typedef __int16 int16_t;
487
+ typedef __int32 int32_t;
488
+ typedef __int64 int64_t;
489
+ typedef unsigned __int8 uint8_t;
490
+ typedef unsigned __int16 uint16_t;
491
+ typedef unsigned __int32 uint32_t;
492
+ typedef unsigned __int64 uint64_t;
493
+ #else
494
+ #include <stdint.h>
495
+ #endif /* _MSC_VER < 1700 */
496
+ #else
497
+ #include <stdint.h>
498
+ #endif /* _MSC_VER */
499
+
500
+ /* Type of cycle clock implementation */
501
+ #ifdef GPR_LINUX
502
+ /* Disable cycle clock by default.
503
+ TODO(soheil): enable when we support fallback for unstable cycle clocks.
504
+ #if defined(__i386__)
505
+ #define GPR_CYCLE_COUNTER_RDTSC_32 1
506
+ #elif defined(__x86_64__) || defined(__amd64__)
507
+ #define GPR_CYCLE_COUNTER_RDTSC_64 1
508
+ #else
509
+ #define GPR_CYCLE_COUNTER_FALLBACK 1
510
+ #endif
511
+ */
512
+ #define GPR_CYCLE_COUNTER_FALLBACK 1
513
+ #else
514
+ #define GPR_CYCLE_COUNTER_FALLBACK 1
515
+ #endif /* GPR_LINUX */
516
+
517
+ /* Cache line alignment */
518
+ #ifndef GPR_CACHELINE_SIZE_LOG
519
+ #if defined(__i386__) || defined(__x86_64__)
520
+ #define GPR_CACHELINE_SIZE_LOG 6
521
+ #endif
522
+ #ifndef GPR_CACHELINE_SIZE_LOG
523
+ /* A reasonable default guess. Note that overestimates tend to waste more
524
+ space, while underestimates tend to waste more time. */
525
+ #define GPR_CACHELINE_SIZE_LOG 6
526
+ #endif /* GPR_CACHELINE_SIZE_LOG */
527
+ #endif /* GPR_CACHELINE_SIZE_LOG */
528
+
529
+ #define GPR_CACHELINE_SIZE (1 << GPR_CACHELINE_SIZE_LOG)
530
+
531
+ /* scrub GCC_ATOMIC if it's not available on this compiler */
532
+ #if defined(GPR_GCC_ATOMIC) && !defined(__ATOMIC_RELAXED)
533
+ #undef GPR_GCC_ATOMIC
534
+ #define GPR_GCC_SYNC 1
535
+ #endif
536
+
537
+ /* Validate platform combinations */
538
+ #if defined(GPR_GCC_ATOMIC) + defined(GPR_GCC_SYNC) + \
539
+ defined(GPR_WINDOWS_ATOMIC) != \
540
+ 1
541
+ #error Must define exactly one of GPR_GCC_ATOMIC, GPR_GCC_SYNC, GPR_WINDOWS_ATOMIC
542
+ #endif
543
+
544
+ #if defined(GPR_ARCH_32) + defined(GPR_ARCH_64) != 1
545
+ #error Must define exactly one of GPR_ARCH_32, GPR_ARCH_64
546
+ #endif
547
+
548
+ #if defined(GPR_CPU_LINUX) + defined(GPR_CPU_POSIX) + defined(GPR_WINDOWS) + \
549
+ defined(GPR_CPU_IPHONE) + defined(GPR_CPU_CUSTOM) != \
550
+ 1
551
+ #error Must define exactly one of GPR_CPU_LINUX, GPR_CPU_POSIX, GPR_WINDOWS, GPR_CPU_IPHONE, GPR_CPU_CUSTOM
552
+ #endif
553
+
554
+ /* maximum alignment needed for any type on this platform, rounded up to a
555
+ power of two */
556
+ #define GPR_MAX_ALIGNMENT 16
557
+
558
+ #ifndef GRPC_ARES
559
+ #define GRPC_ARES 1
560
+ #endif
561
+
562
+ #ifndef GRPC_IF_NAMETOINDEX
563
+ #define GRPC_IF_NAMETOINDEX 1
564
+ #endif
565
+
566
+ #ifndef GRPC_MUST_USE_RESULT
567
+ #if defined(__GNUC__) && !defined(__MINGW32__)
568
+ #define GRPC_MUST_USE_RESULT __attribute__((warn_unused_result))
569
+ #define GPR_ALIGN_STRUCT(n) __attribute__((aligned(n)))
570
+ #else
571
+ #define GRPC_MUST_USE_RESULT
572
+ #define GPR_ALIGN_STRUCT(n)
573
+ #endif
574
+ #ifdef USE_STRICT_WARNING
575
+ /* When building with USE_STRICT_WARNING (which -Werror), types with this
576
+ attribute will be treated as annotated with warn_unused_result, enforcing
577
+ returned values of this type should be used.
578
+ This is added in grpc::Status in mind to address the issue where it always
579
+ has this annotation internally but OSS doesn't, sometimes causing internal
580
+ build failure. To prevent this, this is added while not introducing
581
+ a breaking change to existing user code which may not use returned values
582
+ of grpc::Status. */
583
+ #define GRPC_MUST_USE_RESULT_WHEN_USE_STRICT_WARNING GRPC_MUST_USE_RESULT
584
+ #else
585
+ #define GRPC_MUST_USE_RESULT_WHEN_USE_STRICT_WARNING
586
+ #endif
587
+ #endif
588
+
589
+ #ifndef GRPC_UNUSED
590
+ #if defined(__GNUC__) && !defined(__MINGW32__)
591
+ #define GRPC_UNUSED __attribute__((unused))
592
+ #else
593
+ #define GRPC_UNUSED
594
+ #endif
595
+ #endif
596
+
597
+ #ifndef GPR_PRINT_FORMAT_CHECK
598
+ #ifdef __GNUC__
599
+ #define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS) \
600
+ __attribute__((format(printf, FORMAT_STR, ARGS)))
601
+ #else
602
+ #define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS)
603
+ #endif
604
+ #endif /* GPR_PRINT_FORMAT_CHECK */
605
+
606
+ #ifndef GPR_HAS_CPP_ATTRIBUTE
607
+ #ifdef __has_cpp_attribute
608
+ #define GPR_HAS_CPP_ATTRIBUTE(a) __has_cpp_attribute(a)
609
+ #else
610
+ #define GPR_HAS_CPP_ATTRIBUTE(a) 0
611
+ #endif
612
+ #endif /* GPR_HAS_CPP_ATTRIBUTE */
613
+
614
+ #ifndef GPR_HAS_ATTRIBUTE
615
+ #ifdef __has_attribute
616
+ #define GPR_HAS_ATTRIBUTE(a) __has_attribute(a)
617
+ #else
618
+ #define GPR_HAS_ATTRIBUTE(a) 0
619
+ #endif
620
+ #endif /* GPR_HAS_ATTRIBUTE */
621
+
622
+ #if GPR_HAS_ATTRIBUTE(noreturn)
623
+ #define GPR_ATTRIBUTE_NORETURN __attribute__((noreturn))
624
+ #else
625
+ #define GPR_ATTRIBUTE_NORETURN
626
+ #endif
627
+
628
+ #if GPR_FORBID_UNREACHABLE_CODE
629
+ #define GPR_UNREACHABLE_CODE(STATEMENT)
630
+ #else
631
+ #ifdef __cplusplus
632
+ extern "C" {
633
+ #endif
634
+ extern void gpr_unreachable_code(const char* reason, const char* file,
635
+ int line) GPR_ATTRIBUTE_NORETURN;
636
+ #ifdef __cplusplus
637
+ }
638
+ #endif
639
+ #define GPR_UNREACHABLE_CODE(STATEMENT) \
640
+ do { \
641
+ gpr_unreachable_code(#STATEMENT, __FILE__, __LINE__); \
642
+ STATEMENT; \
643
+ } while (0)
644
+ #endif /* GPR_FORBID_UNREACHABLE_CODE */
645
+
646
+ #ifndef GPRAPI
647
+ #define GPRAPI
648
+ #endif
649
+
650
+ #ifndef GRPCAPI
651
+ #define GRPCAPI GPRAPI
652
+ #endif
653
+
654
+ #ifndef CENSUSAPI
655
+ #define CENSUSAPI GRPCAPI
656
+ #endif
657
+
658
+ #ifndef GPR_HAS_FEATURE
659
+ #ifdef __has_feature
660
+ #define GPR_HAS_FEATURE(a) __has_feature(a)
661
+ #else
662
+ #define GPR_HAS_FEATURE(a) 0
663
+ #endif
664
+ #endif /* GPR_HAS_FEATURE */
665
+
666
+ #ifndef GPR_ATTRIBUTE_NOINLINE
667
+ #if GPR_HAS_ATTRIBUTE(noinline) || (defined(__GNUC__) && !defined(__clang__))
668
+ #define GPR_ATTRIBUTE_NOINLINE __attribute__((noinline))
669
+ #define GPR_HAS_ATTRIBUTE_NOINLINE 1
670
+ #else
671
+ #define GPR_ATTRIBUTE_NOINLINE
672
+ #endif
673
+ #endif /* GPR_ATTRIBUTE_NOINLINE */
674
+
675
+ #ifndef GPR_NO_UNIQUE_ADDRESS
676
+ #if GPR_HAS_CPP_ATTRIBUTE(no_unique_address)
677
+ #define GPR_NO_UNIQUE_ADDRESS [[no_unique_address]]
678
+ #else
679
+ #define GPR_NO_UNIQUE_ADDRESS
680
+ #endif
681
+ #endif /* GPR_NO_UNIQUE_ADDRESS */
682
+
683
+ #ifndef GRPC_DEPRECATED
684
+ #if GPR_HAS_CPP_ATTRIBUTE(deprecated)
685
+ #define GRPC_DEPRECATED(reason) [[deprecated(reason)]]
686
+ #else
687
+ #define GRPC_DEPRECATED(reason)
688
+ #endif
689
+ #endif /* GRPC_DEPRECATED */
690
+
691
+ #ifndef GPR_ATTRIBUTE_WEAK
692
+ /* Attribute weak is broken on LLVM/windows:
693
+ * https://bugs.llvm.org/show_bug.cgi?id=37598 */
694
+ #if (GPR_HAS_ATTRIBUTE(weak) || (defined(__GNUC__) && !defined(__clang__))) && \
695
+ !(defined(__llvm__) && defined(_WIN32))
696
+ #define GPR_ATTRIBUTE_WEAK __attribute__((weak))
697
+ #define GPR_HAS_ATTRIBUTE_WEAK 1
698
+ #else
699
+ #define GPR_ATTRIBUTE_WEAK
700
+ #endif
701
+ #endif /* GPR_ATTRIBUTE_WEAK */
702
+
703
+ #ifndef GPR_ATTRIBUTE_NO_TSAN /* (1) */
704
+ #if GPR_HAS_FEATURE(thread_sanitizer)
705
+ #define GPR_ATTRIBUTE_NO_TSAN __attribute__((no_sanitize("thread")))
706
+ #endif /* GPR_HAS_FEATURE */
707
+ #ifndef GPR_ATTRIBUTE_NO_TSAN /* (2) */
708
+ #define GPR_ATTRIBUTE_NO_TSAN
709
+ #endif /* GPR_ATTRIBUTE_NO_TSAN (2) */
710
+ #endif /* GPR_ATTRIBUTE_NO_TSAN (1) */
711
+
712
+ /* GRPC_TSAN_ENABLED will be defined, when compiled with thread sanitizer. */
713
+ #ifndef GRPC_TSAN_SUPPRESSED
714
+ #if defined(__SANITIZE_THREAD__)
715
+ #define GRPC_TSAN_ENABLED
716
+ #elif GPR_HAS_FEATURE(thread_sanitizer)
717
+ #define GRPC_TSAN_ENABLED
718
+ #endif
719
+ #endif
720
+
721
+ /* GRPC_ASAN_ENABLED will be defined, when compiled with address sanitizer. */
722
+ #ifndef GRPC_ASAN_SUPPRESSED
723
+ #if defined(__SANITIZE_ADDRESS__)
724
+ #define GRPC_ASAN_ENABLED
725
+ #elif GPR_HAS_FEATURE(address_sanitizer)
726
+ #define GRPC_ASAN_ENABLED
727
+ #endif
728
+ #endif
729
+
730
+ /* GRPC_ALLOW_EXCEPTIONS should be 0 or 1 if exceptions are allowed or not */
731
+ #ifndef GRPC_ALLOW_EXCEPTIONS
732
+ #ifdef GPR_WINDOWS
733
+ #if defined(_MSC_VER) && defined(_CPPUNWIND)
734
+ #define GRPC_ALLOW_EXCEPTIONS 1
735
+ #elif defined(__EXCEPTIONS)
736
+ #define GRPC_ALLOW_EXCEPTIONS 1
737
+ #else
738
+ #define GRPC_ALLOW_EXCEPTIONS 0
739
+ #endif
740
+ #else /* GPR_WINDOWS */
741
+ #ifdef __EXCEPTIONS
742
+ #define GRPC_ALLOW_EXCEPTIONS 1
743
+ #else /* __EXCEPTIONS */
744
+ #define GRPC_ALLOW_EXCEPTIONS 0
745
+ #endif /* __EXCEPTIONS */
746
+ #endif /* __GPR_WINDOWS */
747
+ #endif /* GRPC_ALLOW_EXCEPTIONS */
748
+
749
+ /* Use GPR_LIKELY only in cases where you are sure that a certain outcome is the
750
+ * most likely. Ideally, also collect performance numbers to justify the claim.
751
+ */
752
+ #ifdef __GNUC__
753
+ #define GPR_LIKELY(x) __builtin_expect((x), 1)
754
+ #define GPR_UNLIKELY(x) __builtin_expect((x), 0)
755
+ #else /* __GNUC__ */
756
+ #define GPR_LIKELY(x) (x)
757
+ #define GPR_UNLIKELY(x) (x)
758
+ #endif /* __GNUC__ */
759
+
760
+ #ifndef __STDC_FORMAT_MACROS
761
+ #define __STDC_FORMAT_MACROS
762
+ #endif
763
+
764
+ /* MSVC doesn't do the empty base class optimization in debug builds by default,
765
+ * and because of ABI likely won't.
766
+ * This enables it for specific types, use as:
767
+ * class GPR_MSVC_EMPTY_BASE_CLASS_WORKAROUND Foo : public A, public B, public C
768
+ * {}; */
769
+ #ifndef GPR_MSVC_EMPTY_BASE_CLASS_WORKAROUND
770
+ #ifdef GPR_WINDOWS
771
+ #define GPR_MSVC_EMPTY_BASE_CLASS_WORKAROUND __declspec(empty_bases)
772
+ #else
773
+ #define GPR_MSVC_EMPTY_BASE_CLASS_WORKAROUND
774
+ #endif
775
+ #endif
776
+
777
+ #define GRPC_CALLBACK_API_NONEXPERIMENTAL
778
+
779
+ /* clang 11 with msan miscompiles destruction of [[no_unique_address]] members
780
+ * of zero size - for a repro see:
781
+ * test/core/compiler_bugs/miscompile_with_no_unique_address_test.cc
782
+ */
783
+ #ifdef __clang__
784
+ #if __clang__ && __clang_major__ <= 11 && __has_feature(memory_sanitizer)
785
+ #undef GPR_NO_UNIQUE_ADDRESS
786
+ #define GPR_NO_UNIQUE_ADDRESS
787
+ #endif
788
+ #endif
23
789
 
24
790
  #endif /* GRPC_SUPPORT_PORT_PLATFORM_H */