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
@@ -1,20 +1,20 @@
1
- /*
2
- *
3
- * Copyright 2015 gRPC authors.
4
- *
5
- * Licensed under the Apache License, Version 2.0 (the "License");
6
- * you may not use this file except in compliance with the License.
7
- * You may obtain a copy of the License at
8
- *
9
- * http://www.apache.org/licenses/LICENSE-2.0
10
- *
11
- * Unless required by applicable law or agreed to in writing, software
12
- * distributed under the License is distributed on an "AS IS" BASIS,
13
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- * See the License for the specific language governing permissions and
15
- * limitations under the License.
16
- *
17
- */
1
+ //
2
+ //
3
+ // Copyright 2015 gRPC authors.
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ //
17
+ //
18
18
 
19
19
  #ifndef GRPC_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H
20
20
  #define GRPC_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H
@@ -28,7 +28,7 @@
28
28
 
29
29
  #include "src/core/lib/debug/trace.h"
30
30
 
31
- /* --- tsi result --- */
31
+ // --- tsi result ---
32
32
 
33
33
  typedef enum {
34
34
  TSI_OK = 0,
@@ -96,139 +96,139 @@ typedef enum {
96
96
  const char* tsi_result_to_string(tsi_result result);
97
97
  const char* tsi_security_level_to_string(tsi_security_level security_level);
98
98
 
99
- /* --- tsi tracing --- */
99
+ // --- tsi tracing ---
100
100
 
101
101
  extern grpc_core::TraceFlag tsi_tracing_enabled;
102
102
 
103
- /* -- tsi_zero_copy_grpc_protector object --
103
+ // -- tsi_zero_copy_grpc_protector object --
104
104
 
105
- This object protects and unprotects grpc slice buffers with zero or minimized
106
- memory copy once the handshake is done. Implementations of this object must be
107
- thread compatible. This object depends on grpc and the details of this object
108
- is defined in transport_security_grpc.h. */
105
+ // This object protects and unprotects grpc slice buffers with zero or minimized
106
+ // memory copy once the handshake is done. Implementations of this object must
107
+ // be thread compatible. This object depends on grpc and the details of this
108
+ // object is defined in transport_security_grpc.h.
109
109
 
110
110
  typedef struct tsi_zero_copy_grpc_protector tsi_zero_copy_grpc_protector;
111
111
 
112
- /* --- tsi_frame_protector object ---
112
+ // --- tsi_frame_protector object ---
113
113
 
114
- This object protects and unprotects buffers once the handshake is done.
115
- Implementations of this object must be thread compatible. */
114
+ // This object protects and unprotects buffers once the handshake is done.
115
+ // Implementations of this object must be thread compatible.
116
116
 
117
117
  typedef struct tsi_frame_protector tsi_frame_protector;
118
118
 
119
- /* Outputs protected frames.
120
- - unprotected_bytes is an input only parameter and points to the data
121
- to be protected.
122
- - unprotected_bytes_size is an input/output parameter used by the caller to
123
- specify how many bytes are available in unprotected_bytes. The output
124
- value is the number of bytes consumed during the call.
125
- - protected_output_frames points to a buffer allocated by the caller that
126
- will be written.
127
- - protected_output_frames_size is an input/output parameter used by the
128
- caller to specify how many bytes are available in protected_output_frames.
129
- As an output, this value indicates the number of bytes written.
130
- - This method returns TSI_OK in case of success or a specific error code in
131
- case of failure. Note that even if all the input unprotected bytes are
132
- consumed, they may not have been processed into the returned protected
133
- output frames. The caller should call the protect_flush method
134
- to make sure that there are no more protected bytes buffered in the
135
- protector.
136
-
137
- A typical way to call this method would be:
138
-
139
- ------------------------------------------------------------------------
140
- unsigned char protected_buffer[4096];
141
- size_t protected_buffer_size = sizeof(protected_buffer);
142
- tsi_result result = TSI_OK;
143
- while (message_size > 0) {
144
- size_t protected_buffer_size_to_send = protected_buffer_size;
145
- size_t processed_message_size = message_size;
146
- result = tsi_frame_protector_protect(protector,
147
- message_bytes,
148
- &processed_message_size,
149
- protected_buffer,
150
- &protected_buffer_size_to_send);
151
- if (result != TSI_OK) break;
152
- send_bytes_to_peer(protected_buffer, protected_buffer_size_to_send);
153
- message_bytes += processed_message_size;
154
- message_size -= processed_message_size;
155
-
156
- // Don't forget to flush.
157
- if (message_size == 0) {
158
- size_t still_pending_size;
159
- do {
160
- protected_buffer_size_to_send = protected_buffer_size;
161
- result = tsi_frame_protector_protect_flush(
162
- protector, protected_buffer,
163
- &protected_buffer_size_to_send, &still_pending_size);
164
- if (result != TSI_OK) break;
165
- send_bytes_to_peer(protected_buffer, protected_buffer_size_to_send);
166
- } while (still_pending_size > 0);
167
- }
168
- }
169
-
170
- if (result != TSI_OK) HandleError(result);
171
- ------------------------------------------------------------------------ */
119
+ // Outputs protected frames.
120
+ // - unprotected_bytes is an input only parameter and points to the data
121
+ // to be protected.
122
+ // - unprotected_bytes_size is an input/output parameter used by the caller to
123
+ // specify how many bytes are available in unprotected_bytes. The output
124
+ // value is the number of bytes consumed during the call.
125
+ // - protected_output_frames points to a buffer allocated by the caller that
126
+ // will be written.
127
+ // - protected_output_frames_size is an input/output parameter used by the
128
+ // caller to specify how many bytes are available in protected_output_frames.
129
+ // As an output, this value indicates the number of bytes written.
130
+ // - This method returns TSI_OK in case of success or a specific error code in
131
+ // case of failure. Note that even if all the input unprotected bytes are
132
+ // consumed, they may not have been processed into the returned protected
133
+ // output frames. The caller should call the protect_flush method
134
+ // to make sure that there are no more protected bytes buffered in the
135
+ // protector.
136
+
137
+ // A typical way to call this method would be:
138
+
139
+ // ------------------------------------------------------------------------
140
+ // unsigned char protected_buffer[4096];
141
+ // size_t protected_buffer_size = sizeof(protected_buffer);
142
+ // tsi_result result = TSI_OK;
143
+ // while (message_size > 0) {
144
+ // size_t protected_buffer_size_to_send = protected_buffer_size;
145
+ // size_t processed_message_size = message_size;
146
+ // result = tsi_frame_protector_protect(protector,
147
+ // message_bytes,
148
+ // &processed_message_size,
149
+ // protected_buffer,
150
+ // &protected_buffer_size_to_send);
151
+ // if (result != TSI_OK) break;
152
+ // send_bytes_to_peer(protected_buffer, protected_buffer_size_to_send);
153
+ // message_bytes += processed_message_size;
154
+ // message_size -= processed_message_size;
155
+
156
+ // // Don't forget to flush.
157
+ // if (message_size == 0) {
158
+ // size_t still_pending_size;
159
+ // do {
160
+ // protected_buffer_size_to_send = protected_buffer_size;
161
+ // result = tsi_frame_protector_protect_flush(
162
+ // protector, protected_buffer,
163
+ // &protected_buffer_size_to_send, &still_pending_size);
164
+ // if (result != TSI_OK) break;
165
+ // send_bytes_to_peer(protected_buffer, protected_buffer_size_to_send);
166
+ // } while (still_pending_size > 0);
167
+ // }
168
+ // }
169
+
170
+ // if (result != TSI_OK) HandleError(result);
171
+ // ------------------------------------------------------------------------
172
172
  tsi_result tsi_frame_protector_protect(tsi_frame_protector* self,
173
173
  const unsigned char* unprotected_bytes,
174
174
  size_t* unprotected_bytes_size,
175
175
  unsigned char* protected_output_frames,
176
176
  size_t* protected_output_frames_size);
177
177
 
178
- /* Indicates that we need to flush the bytes buffered in the protector and get
179
- the resulting frame.
180
- - protected_output_frames points to a buffer allocated by the caller that
181
- will be written.
182
- - protected_output_frames_size is an input/output parameter used by the
183
- caller to specify how many bytes are available in protected_output_frames.
184
- - still_pending_bytes is an output parameter indicating the number of bytes
185
- that still need to be flushed from the protector.*/
178
+ // Indicates that we need to flush the bytes buffered in the protector and get
179
+ // the resulting frame.
180
+ // - protected_output_frames points to a buffer allocated by the caller that
181
+ // will be written.
182
+ // - protected_output_frames_size is an input/output parameter used by the
183
+ // caller to specify how many bytes are available in protected_output_frames.
184
+ // - still_pending_bytes is an output parameter indicating the number of bytes
185
+ // that still need to be flushed from the protector.
186
186
  tsi_result tsi_frame_protector_protect_flush(
187
187
  tsi_frame_protector* self, unsigned char* protected_output_frames,
188
188
  size_t* protected_output_frames_size, size_t* still_pending_size);
189
189
 
190
- /* Outputs unprotected bytes.
191
- - protected_frames_bytes is an input only parameter and points to the
192
- protected frames to be unprotected.
193
- - protected_frames_bytes_size is an input/output only parameter used by the
194
- caller to specify how many bytes are available in protected_bytes. The
195
- output value is the number of bytes consumed during the call.
196
- Implementations will buffer up to a frame of protected data.
197
- - unprotected_bytes points to a buffer allocated by the caller that will be
198
- written.
199
- - unprotected_bytes_size is an input/output parameter used by the caller to
200
- specify how many bytes are available in unprotected_bytes. This
201
- value is expected to be at most max_protected_frame_size minus overhead
202
- which means that max_protected_frame_size is a safe bet. The output value
203
- is the number of bytes actually written.
204
- If *unprotected_bytes_size is unchanged, there may be more data remaining
205
- to unprotect, and the caller should call this function again.
206
-
207
- - This method returns TSI_OK in case of success. Success includes cases where
208
- there is not enough data to output a frame in which case
209
- unprotected_bytes_size will be set to 0 and cases where the internal buffer
210
- needs to be read before new protected data can be processed in which case
211
- protected_frames_size will be set to 0. */
190
+ // Outputs unprotected bytes.
191
+ // - protected_frames_bytes is an input only parameter and points to the
192
+ // protected frames to be unprotected.
193
+ // - protected_frames_bytes_size is an input/output only parameter used by the
194
+ // caller to specify how many bytes are available in protected_bytes. The
195
+ // output value is the number of bytes consumed during the call.
196
+ // Implementations will buffer up to a frame of protected data.
197
+ // - unprotected_bytes points to a buffer allocated by the caller that will be
198
+ // written.
199
+ // - unprotected_bytes_size is an input/output parameter used by the caller to
200
+ // specify how many bytes are available in unprotected_bytes. This
201
+ // value is expected to be at most max_protected_frame_size minus overhead
202
+ // which means that max_protected_frame_size is a safe bet. The output value
203
+ // is the number of bytes actually written.
204
+ // If *unprotected_bytes_size is unchanged, there may be more data remaining
205
+ // to unprotect, and the caller should call this function again.
206
+
207
+ // - This method returns TSI_OK in case of success. Success includes cases where
208
+ // there is not enough data to output a frame in which case
209
+ // unprotected_bytes_size will be set to 0 and cases where the internal buffer
210
+ // needs to be read before new protected data can be processed in which case
211
+ // protected_frames_size will be set to 0.
212
212
  tsi_result tsi_frame_protector_unprotect(
213
213
  tsi_frame_protector* self, const unsigned char* protected_frames_bytes,
214
214
  size_t* protected_frames_bytes_size, unsigned char* unprotected_bytes,
215
215
  size_t* unprotected_bytes_size);
216
216
 
217
- /* Destroys the tsi_frame_protector object. */
217
+ // Destroys the tsi_frame_protector object.
218
218
  void tsi_frame_protector_destroy(tsi_frame_protector* self);
219
219
 
220
- /* --- tsi_peer objects ---
220
+ // --- tsi_peer objects ---
221
221
 
222
- tsi_peer objects are a set of properties. The peer owns the properties. */
222
+ // tsi_peer objects are a set of properties. The peer owns the properties.
223
223
 
224
- /* This property is of type TSI_PEER_PROPERTY_STRING. */
224
+ // This property is of type TSI_PEER_PROPERTY_STRING.
225
225
  #define TSI_CERTIFICATE_TYPE_PEER_PROPERTY "certificate_type"
226
226
 
227
- /* This property represents security level of a channel. */
227
+ // This property represents security level of a channel.
228
228
  #define TSI_SECURITY_LEVEL_PEER_PROPERTY "security_level"
229
229
 
230
- /* Property values may contain NULL characters just like C++ strings.
231
- The length field gives the length of the string. */
230
+ // Property values may contain NULL characters just like C++ strings.
231
+ // The length field gives the length of the string.
232
232
  typedef struct tsi_peer_property {
233
233
  char* name;
234
234
  struct {
@@ -241,256 +241,256 @@ struct tsi_peer {
241
241
  tsi_peer_property* properties;
242
242
  size_t property_count;
243
243
  };
244
- /* Destructs the tsi_peer object. */
244
+ // Destructs the tsi_peer object.
245
245
  void tsi_peer_destruct(tsi_peer* self);
246
246
 
247
- /* --- tsi_handshaker_result object ---
247
+ // --- tsi_handshaker_result object ---
248
248
 
249
- This object contains all necessary handshake results and data such as peer
250
- info, negotiated keys, unused handshake bytes, when the handshake completes.
251
- Implementations of this object must be thread compatible. */
249
+ // This object contains all necessary handshake results and data such as peer
250
+ // info, negotiated keys, unused handshake bytes, when the handshake completes.
251
+ // Implementations of this object must be thread compatible.
252
252
 
253
253
  typedef struct tsi_handshaker_result tsi_handshaker_result;
254
254
 
255
- /* This method extracts tsi peer. It returns TSI_OK assuming there is no fatal
256
- error.
257
- The caller is responsible for destructing the peer. */
255
+ // This method extracts tsi peer. It returns TSI_OK assuming there is no fatal
256
+ // error.
257
+ // The caller is responsible for destructing the peer.
258
258
  tsi_result tsi_handshaker_result_extract_peer(const tsi_handshaker_result* self,
259
259
  tsi_peer* peer);
260
260
 
261
- /* This method indicates what type of frame protector is provided by the
262
- TSI implementation. */
261
+ // This method indicates what type of frame protector is provided by the
262
+ // TSI implementation.
263
263
  tsi_result tsi_handshaker_result_get_frame_protector_type(
264
264
  const tsi_handshaker_result* self,
265
265
  tsi_frame_protector_type* frame_protector_type);
266
266
 
267
- /* This method creates a tsi_frame_protector object. It returns TSI_OK assuming
268
- there is no fatal error.
269
- The caller is responsible for destroying the protector. */
267
+ // This method creates a tsi_frame_protector object. It returns TSI_OK assuming
268
+ // there is no fatal error.
269
+ // The caller is responsible for destroying the protector.
270
270
  tsi_result tsi_handshaker_result_create_frame_protector(
271
271
  const tsi_handshaker_result* self, size_t* max_output_protected_frame_size,
272
272
  tsi_frame_protector** protector);
273
273
 
274
- /* This method returns the unused bytes from the handshake. It returns TSI_OK
275
- assuming there is no fatal error.
276
- Ownership of the bytes is retained by the handshaker result. As a
277
- consequence, the caller must not free the bytes. */
274
+ // This method returns the unused bytes from the handshake. It returns TSI_OK
275
+ // assuming there is no fatal error.
276
+ // Ownership of the bytes is retained by the handshaker result. As a
277
+ // consequence, the caller must not free the bytes.
278
278
  tsi_result tsi_handshaker_result_get_unused_bytes(
279
279
  const tsi_handshaker_result* self, const unsigned char** bytes,
280
280
  size_t* bytes_size);
281
281
 
282
- /* This method releases the tsi_handshaker_handshaker object. After this method
283
- is called, no other method can be called on the object. */
282
+ // This method releases the tsi_handshaker_handshaker object. After this method
283
+ // is called, no other method can be called on the object.
284
284
  void tsi_handshaker_result_destroy(tsi_handshaker_result* self);
285
285
 
286
- /* --- tsi_handshaker objects ----
287
-
288
- Implementations of this object must be thread compatible.
289
-
290
- ------------------------------------------------------------------------
291
-
292
- A typical usage supporting both synchronous and asynchronous TSI handshaker
293
- implementations would be:
294
-
295
- ------------------------------------------------------------------------
296
-
297
- typedef struct {
298
- tsi_handshaker *handshaker;
299
- tsi_handshaker_result *handshaker_result;
300
- unsigned char *handshake_buffer;
301
- size_t handshake_buffer_size;
302
- ...
303
- } security_handshaker;
304
-
305
- void do_handshake(security_handshaker *h, ...) {
306
- // Start the handshake by the calling do_handshake_next.
307
- do_handshake_next(h, NULL, 0);
308
- ...
309
- }
310
-
311
- // This method is the callback function when data is received from the
312
- // peer. This method will read bytes into the handshake buffer and call
313
- // do_handshake_next.
314
- void on_handshake_data_received_from_peer(void *user_data) {
315
- security_handshaker *h = (security_handshaker *)user_data;
316
- size_t bytes_received_size = h->handshake_buffer_size;
317
- read_bytes_from_peer(h->handshake_buffer, &bytes_received_size);
318
- do_handshake_next(h, h->handshake_buffer, bytes_received_size);
319
- }
320
-
321
- // This method processes a step of handshake, calling tsi_handshaker_next.
322
- void do_handshake_next(security_handshaker *h,
323
- const unsigned char* bytes_received,
324
- size_t bytes_received_size) {
325
- tsi_result status = TSI_OK;
326
- unsigned char *bytes_to_send = NULL;
327
- size_t bytes_to_send_size = 0;
328
- tsi_handshaker_result *result = NULL;
329
- status = tsi_handshaker_next(
330
- handshaker, bytes_received, bytes_received_size, &bytes_to_send,
331
- &bytes_to_send_size, &result, on_handshake_next_done, h);
332
- // If TSI handshaker is asynchronous, on_handshake_next_done will be
333
- // executed inside tsi_handshaker_next.
334
- if (status == TSI_ASYNC) return;
335
- // If TSI handshaker is synchronous, invoke callback directly in this
336
- // thread.
337
- on_handshake_next_done(status, (void *)h, bytes_to_send,
338
- bytes_to_send_size, result);
339
- }
340
-
341
- // This is the callback function to execute after tsi_handshaker_next.
342
- // It is passed to tsi_handshaker_next as a function parameter.
343
- void on_handshake_next_done(
344
- tsi_result status, void *user_data, const unsigned char *bytes_to_send,
345
- size_t bytes_to_send_size, tsi_handshaker_result *result) {
346
- security_handshaker *h = (security_handshaker *)user_data;
347
- if (status == TSI_INCOMPLETE_DATA) {
348
- // Schedule an asynchronous read from the peer. If handshake data are
349
- // received, on_handshake_data_received_from_peer will be called.
350
- async_read_from_peer(..., ..., on_handshake_data_received_from_peer);
351
- return;
352
- }
353
- if (status != TSI_OK) return;
354
-
355
- if (bytes_to_send_size > 0) {
356
- send_bytes_to_peer(bytes_to_send, bytes_to_send_size);
357
- }
358
-
359
- if (result != NULL) {
360
- // Handshake completed.
361
- h->result = result;
362
- // Check the Peer.
363
- tsi_peer peer;
364
- status = tsi_handshaker_result_extract_peer(result, &peer);
365
- if (status != TSI_OK) return;
366
- status = check_peer(&peer);
367
- tsi_peer_destruct(&peer);
368
- if (status != TSI_OK) return;
369
-
370
- // Create the protector.
371
- tsi_frame_protector* protector = NULL;
372
- status = tsi_handshaker_result_create_frame_protector(result, NULL,
373
- &protector);
374
- if (status != TSI_OK) return;
375
-
376
- // Do not forget to unprotect outstanding data if any.
377
- ....
378
- }
379
- }
380
- ------------------------------------------------------------------------ */
286
+ // --- tsi_handshaker objects ----
287
+
288
+ // Implementations of this object must be thread compatible.
289
+
290
+ // ------------------------------------------------------------------------
291
+
292
+ // A typical usage supporting both synchronous and asynchronous TSI handshaker
293
+ // implementations would be:
294
+
295
+ // ------------------------------------------------------------------------
296
+
297
+ // typedef struct {
298
+ // tsi_handshaker *handshaker;
299
+ // tsi_handshaker_result *handshaker_result;
300
+ // unsigned char *handshake_buffer;
301
+ // size_t handshake_buffer_size;
302
+ // ...
303
+ // } security_handshaker;
304
+
305
+ // void do_handshake(security_handshaker *h, ...) {
306
+ // // Start the handshake by the calling do_handshake_next.
307
+ // do_handshake_next(h, NULL, 0);
308
+ // ...
309
+ // }
310
+
311
+ // // This method is the callback function when data is received from the
312
+ // // peer. This method will read bytes into the handshake buffer and call
313
+ // // do_handshake_next.
314
+ // void on_handshake_data_received_from_peer(void *user_data) {
315
+ // security_handshaker *h = (security_handshaker *)user_data;
316
+ // size_t bytes_received_size = h->handshake_buffer_size;
317
+ // read_bytes_from_peer(h->handshake_buffer, &bytes_received_size);
318
+ // do_handshake_next(h, h->handshake_buffer, bytes_received_size);
319
+ // }
320
+
321
+ // // This method processes a step of handshake, calling tsi_handshaker_next.
322
+ // void do_handshake_next(security_handshaker *h,
323
+ // const unsigned char* bytes_received,
324
+ // size_t bytes_received_size) {
325
+ // tsi_result status = TSI_OK;
326
+ // unsigned char *bytes_to_send = NULL;
327
+ // size_t bytes_to_send_size = 0;
328
+ // tsi_handshaker_result *result = NULL;
329
+ // status = tsi_handshaker_next(
330
+ // handshaker, bytes_received, bytes_received_size, &bytes_to_send,
331
+ // &bytes_to_send_size, &result, on_handshake_next_done, h);
332
+ // // If TSI handshaker is asynchronous, on_handshake_next_done will be
333
+ // // executed inside tsi_handshaker_next.
334
+ // if (status == TSI_ASYNC) return;
335
+ // // If TSI handshaker is synchronous, invoke callback directly in this
336
+ // // thread.
337
+ // on_handshake_next_done(status, (void *)h, bytes_to_send,
338
+ // bytes_to_send_size, result);
339
+ // }
340
+
341
+ // // This is the callback function to execute after tsi_handshaker_next.
342
+ // // It is passed to tsi_handshaker_next as a function parameter.
343
+ // void on_handshake_next_done(
344
+ // tsi_result status, void *user_data, const unsigned char *bytes_to_send,
345
+ // size_t bytes_to_send_size, tsi_handshaker_result *result) {
346
+ // security_handshaker *h = (security_handshaker *)user_data;
347
+ // if (status == TSI_INCOMPLETE_DATA) {
348
+ // // Schedule an asynchronous read from the peer. If handshake data are
349
+ // // received, on_handshake_data_received_from_peer will be called.
350
+ // async_read_from_peer(..., ..., on_handshake_data_received_from_peer);
351
+ // return;
352
+ // }
353
+ // if (status != TSI_OK) return;
354
+
355
+ // if (bytes_to_send_size > 0) {
356
+ // send_bytes_to_peer(bytes_to_send, bytes_to_send_size);
357
+ // }
358
+
359
+ // if (result != NULL) {
360
+ // // Handshake completed.
361
+ // h->result = result;
362
+ // // Check the Peer.
363
+ // tsi_peer peer;
364
+ // status = tsi_handshaker_result_extract_peer(result, &peer);
365
+ // if (status != TSI_OK) return;
366
+ // status = check_peer(&peer);
367
+ // tsi_peer_destruct(&peer);
368
+ // if (status != TSI_OK) return;
369
+
370
+ // // Create the protector.
371
+ // tsi_frame_protector* protector = NULL;
372
+ // status = tsi_handshaker_result_create_frame_protector(result, NULL,
373
+ // &protector);
374
+ // if (status != TSI_OK) return;
375
+
376
+ // // Do not forget to unprotect outstanding data if any.
377
+ // ....
378
+ // }
379
+ // }
380
+ // ------------------------------------------------------------------------
381
381
  typedef struct tsi_handshaker tsi_handshaker;
382
382
 
383
- /* TODO(jiangtaoli2016): Cleans up deprecated methods when we are ready. */
384
-
385
- /* TO BE DEPRECATED SOON. Use tsi_handshaker_next instead.
386
- Gets bytes that need to be sent to the peer.
387
- - bytes is the buffer that will be written with the data to be sent to the
388
- peer.
389
- - bytes_size is an input/output parameter specifying the capacity of the
390
- bytes parameter as input and the number of bytes written as output.
391
- Returns TSI_OK if all the data to send to the peer has been written or if
392
- nothing has to be sent to the peer (in which base bytes_size outputs to 0),
393
- otherwise returns TSI_INCOMPLETE_DATA which indicates that this method
394
- needs to be called again to get all the bytes to send to the peer (there
395
- was more data to write than the specified bytes_size). In case of a fatal
396
- error in the handshake, another specific error code is returned. */
383
+ // TODO(jiangtaoli2016): Cleans up deprecated methods when we are ready.
384
+
385
+ // TO BE DEPRECATED SOON. Use tsi_handshaker_next instead.
386
+ // Gets bytes that need to be sent to the peer.
387
+ // - bytes is the buffer that will be written with the data to be sent to the
388
+ // peer.
389
+ // - bytes_size is an input/output parameter specifying the capacity of the
390
+ // bytes parameter as input and the number of bytes written as output.
391
+ // Returns TSI_OK if all the data to send to the peer has been written or if
392
+ // nothing has to be sent to the peer (in which base bytes_size outputs to 0),
393
+ // otherwise returns TSI_INCOMPLETE_DATA which indicates that this method
394
+ // needs to be called again to get all the bytes to send to the peer (there
395
+ // was more data to write than the specified bytes_size). In case of a fatal
396
+ // error in the handshake, another specific error code is returned.
397
397
  tsi_result tsi_handshaker_get_bytes_to_send_to_peer(tsi_handshaker* self,
398
398
  unsigned char* bytes,
399
399
  size_t* bytes_size);
400
400
 
401
- /* TO BE DEPRECATED SOON. Use tsi_handshaker_next instead.
402
- Processes bytes received from the peer.
403
- - bytes is the buffer containing the data.
404
- - bytes_size is an input/output parameter specifying the size of the data as
405
- input and the number of bytes consumed as output.
406
- Return TSI_OK if the handshake has all the data it needs to process,
407
- otherwise return TSI_INCOMPLETE_DATA which indicates that this method
408
- needs to be called again to complete the data needed for processing. In
409
- case of a fatal error in the handshake, another specific error code is
410
- returned. */
401
+ // TO BE DEPRECATED SOON. Use tsi_handshaker_next instead.
402
+ // Processes bytes received from the peer.
403
+ // - bytes is the buffer containing the data.
404
+ // - bytes_size is an input/output parameter specifying the size of the data as
405
+ // input and the number of bytes consumed as output.
406
+ // Return TSI_OK if the handshake has all the data it needs to process,
407
+ // otherwise return TSI_INCOMPLETE_DATA which indicates that this method
408
+ // needs to be called again to complete the data needed for processing. In
409
+ // case of a fatal error in the handshake, another specific error code is
410
+ // returned.
411
411
  tsi_result tsi_handshaker_process_bytes_from_peer(tsi_handshaker* self,
412
412
  const unsigned char* bytes,
413
413
  size_t* bytes_size);
414
414
 
415
- /* TO BE DEPRECATED SOON.
416
- Gets the result of the handshaker.
417
- Returns TSI_OK if the hanshake completed successfully and there has been no
418
- errors. Returns TSI_HANDSHAKE_IN_PROGRESS if the handshaker is not done yet
419
- but no error has been encountered so far. Otherwise the handshaker failed
420
- with the returned error. */
415
+ // TO BE DEPRECATED SOON.
416
+ // Gets the result of the handshaker.
417
+ // Returns TSI_OK if the hanshake completed successfully and there has been no
418
+ // errors. Returns TSI_HANDSHAKE_IN_PROGRESS if the handshaker is not done yet
419
+ // but no error has been encountered so far. Otherwise the handshaker failed
420
+ // with the returned error.
421
421
  tsi_result tsi_handshaker_get_result(tsi_handshaker* self);
422
422
 
423
- /* TO BE DEPRECATED SOON.
424
- Returns 1 if the handshake is in progress, 0 otherwise. */
423
+ // TO BE DEPRECATED SOON.
424
+ // Returns 1 if the handshake is in progress, 0 otherwise.
425
425
  #define tsi_handshaker_is_in_progress(h) \
426
426
  (tsi_handshaker_get_result((h)) == TSI_HANDSHAKE_IN_PROGRESS)
427
427
 
428
- /* TO BE DEPRECATED SOON. Use tsi_handshaker_result_extract_peer instead.
429
- This method may return TSI_FAILED_PRECONDITION if
430
- tsi_handshaker_is_in_progress returns 1, it returns TSI_OK otherwise
431
- assuming the handshaker is not in a fatal error state.
432
- The caller is responsible for destructing the peer. */
428
+ // TO BE DEPRECATED SOON. Use tsi_handshaker_result_extract_peer instead.
429
+ // This method may return TSI_FAILED_PRECONDITION if
430
+ // tsi_handshaker_is_in_progress returns 1, it returns TSI_OK otherwise
431
+ // assuming the handshaker is not in a fatal error state.
432
+ // The caller is responsible for destructing the peer.
433
433
  tsi_result tsi_handshaker_extract_peer(tsi_handshaker* self, tsi_peer* peer);
434
434
 
435
- /* TO BE DEPRECATED SOON. Use tsi_handshaker_result_create_frame_protector
436
- instead.
437
- This method creates a tsi_frame_protector object after the handshake phase
438
- is done. After this method has been called successfully, the only method
439
- that can be called on this object is Destroy.
440
- - max_output_protected_frame_size is an input/output parameter specifying the
441
- desired max output protected frame size as input and outputing the actual
442
- max output frame size as the output. Passing NULL is OK and will result in
443
- the implementation choosing the default maximum protected frame size. Note
444
- that this size only applies to outgoing frames (generated with
445
- tsi_frame_protector_protect) and not incoming frames (input of
446
- tsi_frame_protector_unprotect).
447
- - protector is an output parameter pointing to the newly created
448
- tsi_frame_protector object.
449
- This method may return TSI_FAILED_PRECONDITION if
450
- tsi_handshaker_is_in_progress returns 1, it returns TSI_OK otherwise assuming
451
- the handshaker is not in a fatal error state.
452
- The caller is responsible for destroying the protector. */
435
+ // TO BE DEPRECATED SOON. Use tsi_handshaker_result_create_frame_protector
436
+ // instead.
437
+ // This method creates a tsi_frame_protector object after the handshake phase
438
+ // is done. After this method has been called successfully, the only method
439
+ // that can be called on this object is Destroy.
440
+ // - max_output_protected_frame_size is an input/output parameter specifying the
441
+ // desired max output protected frame size as input and outputing the actual
442
+ // max output frame size as the output. Passing NULL is OK and will result in
443
+ // the implementation choosing the default maximum protected frame size. Note
444
+ // that this size only applies to outgoing frames (generated with
445
+ // tsi_frame_protector_protect) and not incoming frames (input of
446
+ // tsi_frame_protector_unprotect).
447
+ // - protector is an output parameter pointing to the newly created
448
+ // tsi_frame_protector object.
449
+ // This method may return TSI_FAILED_PRECONDITION if
450
+ // tsi_handshaker_is_in_progress returns 1, it returns TSI_OK otherwise assuming
451
+ // the handshaker is not in a fatal error state.
452
+ // The caller is responsible for destroying the protector.
453
453
  tsi_result tsi_handshaker_create_frame_protector(
454
454
  tsi_handshaker* self, size_t* max_output_protected_frame_size,
455
455
  tsi_frame_protector** protector);
456
456
 
457
- /* Callback function definition for tsi_handshaker_next.
458
- - status indicates the status of the next operation.
459
- - user_data is the argument to callback function passed from the caller.
460
- - bytes_to_send is the data buffer to be sent to the peer.
461
- - bytes_to_send_size is the size of data buffer to be sent to the peer.
462
- - handshaker_result is the result of handshake when the handshake completes,
463
- is NULL otherwise. */
457
+ // Callback function definition for tsi_handshaker_next.
458
+ // - status indicates the status of the next operation.
459
+ // - user_data is the argument to callback function passed from the caller.
460
+ // - bytes_to_send is the data buffer to be sent to the peer.
461
+ // - bytes_to_send_size is the size of data buffer to be sent to the peer.
462
+ // - handshaker_result is the result of handshake when the handshake completes,
463
+ // is NULL otherwise.
464
464
  typedef void (*tsi_handshaker_on_next_done_cb)(
465
465
  tsi_result status, void* user_data, const unsigned char* bytes_to_send,
466
466
  size_t bytes_to_send_size, tsi_handshaker_result* handshaker_result);
467
467
 
468
- /* Conduct a next step of the handshake.
469
- - received_bytes is the buffer containing the data received from the peer.
470
- - received_bytes_size is the size of the data received from the peer.
471
- - bytes_to_send is the data buffer to be sent to the peer.
472
- - bytes_to_send_size is the size of data buffer to be sent to the peer.
473
- - handshaker_result is the result of handshake if the handshake completes.
474
- - cb is the callback function defined above. It can be NULL for synchronous
475
- TSI handshaker implementation.
476
- - user_data is the argument to callback function passed from the caller.
477
- - error, if non-null, will be populated with a human-readable error
478
- message whenever the result value is something other than TSI_OK,
479
- TSI_ASYNC, or TSI_INCOMPLETE_DATA. The object pointed to by this
480
- argument is owned by the caller and must continue to exist until after the
481
- handshake is finished. Some TSI implementations cache this value,
482
- so callers must pass the same value to all calls to tsi_handshaker_next()
483
- for a given handshake.
484
- This method returns TSI_ASYNC if the TSI handshaker implementation is
485
- asynchronous, and in this case, the callback is guaranteed to run in another
486
- thread owned by TSI. It returns TSI_OK if the handshake completes or if
487
- there are data to send to the peer, otherwise returns TSI_INCOMPLETE_DATA
488
- which indicates that this method needs to be called again with more data
489
- from the peer. In case of a fatal error in the handshake, another specific
490
- error code is returned.
491
- The caller is responsible for destroying the handshaker_result. However,
492
- the caller should not free bytes_to_send, as the buffer is owned by the
493
- tsi_handshaker object. */
468
+ // Conduct a next step of the handshake.
469
+ // - received_bytes is the buffer containing the data received from the peer.
470
+ // - received_bytes_size is the size of the data received from the peer.
471
+ // - bytes_to_send is the data buffer to be sent to the peer.
472
+ // - bytes_to_send_size is the size of data buffer to be sent to the peer.
473
+ // - handshaker_result is the result of handshake if the handshake completes.
474
+ // - cb is the callback function defined above. It can be NULL for synchronous
475
+ // TSI handshaker implementation.
476
+ // - user_data is the argument to callback function passed from the caller.
477
+ // - error, if non-null, will be populated with a human-readable error
478
+ // message whenever the result value is something other than TSI_OK,
479
+ // TSI_ASYNC, or TSI_INCOMPLETE_DATA. The object pointed to by this
480
+ // argument is owned by the caller and must continue to exist until after the
481
+ // handshake is finished. Some TSI implementations cache this value,
482
+ // so callers must pass the same value to all calls to tsi_handshaker_next()
483
+ // for a given handshake.
484
+ // This method returns TSI_ASYNC if the TSI handshaker implementation is
485
+ // asynchronous, and in this case, the callback is guaranteed to run in another
486
+ // thread owned by TSI. It returns TSI_OK if the handshake completes or if
487
+ // there are data to send to the peer, otherwise returns TSI_INCOMPLETE_DATA
488
+ // which indicates that this method needs to be called again with more data
489
+ // from the peer. In case of a fatal error in the handshake, another specific
490
+ // error code is returned.
491
+ // The caller is responsible for destroying the handshaker_result. However,
492
+ // the caller should not free bytes_to_send, as the buffer is owned by the
493
+ // tsi_handshaker object.
494
494
  tsi_result tsi_handshaker_next(tsi_handshaker* self,
495
495
  const unsigned char* received_bytes,
496
496
  size_t received_bytes_size,
@@ -500,22 +500,22 @@ tsi_result tsi_handshaker_next(tsi_handshaker* self,
500
500
  tsi_handshaker_on_next_done_cb cb,
501
501
  void* user_data, std::string* error = nullptr);
502
502
 
503
- /* This method shuts down a TSI handshake that is in progress.
504
- *
505
- * This method will be invoked when TSI handshake should be terminated before
506
- * being finished in order to free any resources being used.
507
- */
503
+ // This method shuts down a TSI handshake that is in progress.
504
+ //
505
+ // This method will be invoked when TSI handshake should be terminated before
506
+ // being finished in order to free any resources being used.
507
+ //
508
508
  void tsi_handshaker_shutdown(tsi_handshaker* self);
509
509
 
510
- /* This method releases the tsi_handshaker object. After this method is called,
511
- no other method can be called on the object. */
510
+ // This method releases the tsi_handshaker object. After this method is called,
511
+ // no other method can be called on the object.
512
512
  void tsi_handshaker_destroy(tsi_handshaker* self);
513
513
 
514
- /* This method initializes the necessary shared objects used for tsi
515
- implementation. */
514
+ // This method initializes the necessary shared objects used for tsi
515
+ // implementation.
516
516
  void tsi_init();
517
517
 
518
- /* This method destroys the shared objects created by tsi_init. */
518
+ // This method destroys the shared objects created by tsi_init.
519
519
  void tsi_destroy();
520
520
 
521
- #endif /* GRPC_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H */
521
+ #endif // GRPC_CORE_TSI_TRANSPORT_SECURITY_INTERFACE_H