grpc 1.51.0 → 1.52.0.pre2

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 +95 -26
  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 2018 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 2018 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_ALTS_CRYPT_GSEC_H
20
20
  #define GRPC_CORE_TSI_ALTS_CRYPT_GSEC_H
@@ -37,13 +37,13 @@ struct iovec {
37
37
  #endif // GRPC_EVENT_ENGINE_POSIX
38
38
  #endif // _STRUCT_IOVEC
39
39
 
40
- /**
41
- * A gsec interface for AEAD encryption schemes. The API is thread-compatible.
42
- * Each implementation of this interface should specify supported values for
43
- * key, nonce, and tag lengths.
44
- */
40
+ ///
41
+ /// A gsec interface for AEAD encryption schemes. The API is thread-compatible.
42
+ /// Each implementation of this interface should specify supported values for
43
+ /// key, nonce, and tag lengths.
44
+ ///
45
45
 
46
- /* Key, nonce, and tag length in bytes */
46
+ // Key, nonce, and tag length in bytes
47
47
  const size_t kAesGcmNonceLength = 12;
48
48
  const size_t kAesGcmTagLength = 16;
49
49
  const size_t kAes128GcmKeyLength = 16;
@@ -55,94 +55,94 @@ const size_t kAes128GcmRekeyKeyLength = 44;
55
55
 
56
56
  typedef struct gsec_aead_crypter gsec_aead_crypter;
57
57
 
58
- /**
59
- * The gsec_aead_crypter is an API for different AEAD implementations such as
60
- * AES_GCM. It encapsulates all AEAD-related operations in the format of
61
- * V-table that stores pointers to functions implementing those operations.
62
- * It also provides helper functions to wrap each of those function pointers.
63
- *
64
- * A typical usage of this object would be:
65
- *
66
- *------------------------------------------------------------------------------
67
- * // Declare a gsec_aead_crypter object, and create and assign an instance
68
- * // of specific AEAD implementation e.g., AES_GCM to it. We assume both
69
- * // key and nonce contain cryptographically secure random bytes, and the key
70
- * // can be derived from an upper-layer application.
71
- * gsec_aead_crypter* crypter;
72
- * char* error_in_creation;
73
- * // User can populate the message with any 100 bytes data.
74
- * uint8_t* message = gpr_malloc(100);
75
- * grpc_status_code creation_status = gsec_aes_gcm_aead_crypter_create(key,
76
- * kAes128GcmKeyLength,
77
- * kAesGcmNonceLength,
78
- * kAesGcmTagLength,
79
- * &crypter,
80
- * false,
81
- * 0
82
- * &error_in_creation);
83
- *
84
- * if (creation_status == GRPC_STATUS_OK) {
85
- * // Allocate a correct amount of memory to hold a ciphertext.
86
- * size_t clength = 0;
87
- * gsec_aead_crypter_max_ciphertext_and_tag_length(crypter, 100, &clength,
88
- * nullptr);
89
- * uint8_t* ciphertext = gpr_malloc(clength);
90
- *
91
- * // Perform encryption
92
- * size_t num_encrypted_bytes = 0;
93
- * char* error_in_encryption = nullptr;
94
- * grpc_status_code status = gsec_aead_crypter_encrypt(crypter, nonce,
95
- * kAesGcmNonceLength,
96
- * nullptr, 0, message,
97
- * 100, ciphertext,
98
- * clength,
99
- * &num_encrypted_bytes,
100
- * &error_in_encryption);
101
- * if (status == GRPC_STATUS_OK) {
102
- * // Allocate a correct amount of memory to hold a plaintext.
103
- * size_t plength = 0;
104
- * gsec_aead_crypter_max_plaintext_length(crypter, num_encrypted_bytes,
105
- * &plength, nullptr);
106
- * uint8_t* plaintext = gpr_malloc(plength);
107
- *
108
- * // Perform decryption.
109
- * size_t num_decrypted_bytes = 0;
110
- * char* error_in_decryption = nullptr;
111
- * status = gsec_aead_crypter_decrypt(crypter, nonce,
112
- * kAesGcmNonceLength, nullptr, 0,
113
- * ciphertext, num_encrypted_bytes,
114
- * plaintext, plength,
115
- * &num_decrypted_bytes,
116
- * &error_in_decryption);
117
- * if (status != GRPC_STATUS_OK) {
118
- * fprintf(stderr, "AEAD decrypt operation failed with error code:"
119
- * "%d, message: %s\n", status, error_in_decryption);
120
- * }
121
- * ...
122
- * gpr_free(plaintext);
123
- * gpr_free(error_in_decryption);
124
- * } else {
125
- * fprintf(stderr, "AEAD encrypt operation failed with error code:"
126
- * "%d, message: %s\n", status, error_in_encryption);
127
- * }
128
- * ...
129
- * gpr_free(ciphertext);
130
- * gpr_free(error_in_encryption);
131
- * } else {
132
- * fprintf(stderr, "Creation of AEAD crypter instance failed with error code:"
133
- * "%d, message: %s\n", creation_status, error_in_creation);
134
- * }
135
- *
136
- * // Destruct AEAD crypter instance.
137
- * if (creation_status == GRPC_STATUS_OK) {
138
- * gsec_aead_crypter_destroy(crypter);
139
- * }
140
- * gpr_free(error_in_creation);
141
- * gpr_free(message);
142
- * -----------------------------------------------------------------------------
143
- */
58
+ ///
59
+ /// The gsec_aead_crypter is an API for different AEAD implementations such as
60
+ /// AES_GCM. It encapsulates all AEAD-related operations in the format of
61
+ /// V-table that stores pointers to functions implementing those operations.
62
+ /// It also provides helper functions to wrap each of those function pointers.
63
+ ///
64
+ /// A typical usage of this object would be:
65
+ ///
66
+ ///------------------------------------------------------------------------------
67
+ ///// Declare a gsec_aead_crypter object, and create and assign an instance
68
+ ///// of specific AEAD implementation e.g., AES_GCM to it. We assume both
69
+ ///// key and nonce contain cryptographically secure random bytes, and the key
70
+ ///// can be derived from an upper-layer application.
71
+ /// gsec_aead_crypter* crypter;
72
+ /// char* error_in_creation;
73
+ ///// User can populate the message with any 100 bytes data.
74
+ /// uint8_t* message = gpr_malloc(100);
75
+ /// grpc_status_code creation_status = gsec_aes_gcm_aead_crypter_create(key,
76
+ /// kAes128GcmKeyLength,
77
+ /// kAesGcmNonceLength,
78
+ /// kAesGcmTagLength,
79
+ /// &crypter,
80
+ /// false,
81
+ /// 0
82
+ /// &error_in_creation);
83
+ ///
84
+ /// if (creation_status == GRPC_STATUS_OK) {
85
+ /// // Allocate a correct amount of memory to hold a ciphertext.
86
+ /// size_t clength = 0;
87
+ /// gsec_aead_crypter_max_ciphertext_and_tag_length(crypter, 100, &clength,
88
+ /// nullptr);
89
+ /// uint8_t* ciphertext = gpr_malloc(clength);
90
+ ///
91
+ /// // Perform encryption
92
+ /// size_t num_encrypted_bytes = 0;
93
+ /// char* error_in_encryption = nullptr;
94
+ /// grpc_status_code status = gsec_aead_crypter_encrypt(crypter, nonce,
95
+ /// kAesGcmNonceLength,
96
+ /// nullptr, 0, message,
97
+ /// 100, ciphertext,
98
+ /// clength,
99
+ /// &num_encrypted_bytes,
100
+ /// &error_in_encryption);
101
+ /// if (status == GRPC_STATUS_OK) {
102
+ /// // Allocate a correct amount of memory to hold a plaintext.
103
+ /// size_t plength = 0;
104
+ /// gsec_aead_crypter_max_plaintext_length(crypter, num_encrypted_bytes,
105
+ /// &plength, nullptr);
106
+ /// uint8_t* plaintext = gpr_malloc(plength);
107
+ ///
108
+ /// // Perform decryption.
109
+ /// size_t num_decrypted_bytes = 0;
110
+ /// char* error_in_decryption = nullptr;
111
+ /// status = gsec_aead_crypter_decrypt(crypter, nonce,
112
+ /// kAesGcmNonceLength, nullptr, 0,
113
+ /// ciphertext, num_encrypted_bytes,
114
+ /// plaintext, plength,
115
+ /// &num_decrypted_bytes,
116
+ /// &error_in_decryption);
117
+ /// if (status != GRPC_STATUS_OK) {
118
+ /// fprintf(stderr, "AEAD decrypt operation failed with error code:"
119
+ /// "%d, message: %s\n", status, error_in_decryption);
120
+ /// }
121
+ /// ...
122
+ /// gpr_free(plaintext);
123
+ /// gpr_free(error_in_decryption);
124
+ /// } else {
125
+ /// fprintf(stderr, "AEAD encrypt operation failed with error code:"
126
+ /// "%d, message: %s\n", status, error_in_encryption);
127
+ /// }
128
+ /// ...
129
+ /// gpr_free(ciphertext);
130
+ /// gpr_free(error_in_encryption);
131
+ ///} else {
132
+ /// fprintf(stderr, "Creation of AEAD crypter instance failed with error code:"
133
+ /// "%d, message: %s\n", creation_status, error_in_creation);
134
+ ///}
135
+ ///
136
+ ///// Destruct AEAD crypter instance.
137
+ /// if (creation_status == GRPC_STATUS_OK) {
138
+ /// gsec_aead_crypter_destroy(crypter);
139
+ ///}
140
+ /// gpr_free(error_in_creation);
141
+ /// gpr_free(message);
142
+ ///-----------------------------------------------------------------------------
143
+ ///
144
144
 
145
- /* V-table for gsec AEAD operations */
145
+ // V-table for gsec AEAD operations
146
146
  typedef struct gsec_aead_crypter_vtable {
147
147
  grpc_status_code (*encrypt_iovec)(
148
148
  gsec_aead_crypter* crypter, const uint8_t* nonce, size_t nonce_length,
@@ -174,44 +174,44 @@ typedef struct gsec_aead_crypter_vtable {
174
174
  void (*destruct)(gsec_aead_crypter* crypter);
175
175
  } gsec_aead_crypter_vtable;
176
176
 
177
- /* Main struct for gsec interface */
177
+ // Main struct for gsec interface
178
178
  struct gsec_aead_crypter {
179
179
  const struct gsec_aead_crypter_vtable* vtable;
180
180
  };
181
181
 
182
- /**
183
- * This method performs an AEAD encrypt operation.
184
- *
185
- * - crypter: AEAD crypter instance.
186
- * - nonce: buffer containing a nonce with its size equal to nonce_length.
187
- * - nonce_length: size of nonce buffer, and must be equal to the value returned
188
- * from method gsec_aead_crypter_nonce_length.
189
- * - aad: buffer containing data that needs to be authenticated but not
190
- * encrypted with its size equal to aad_length.
191
- * - aad_length: size of aad buffer, which should be zero if the buffer is
192
- * nullptr.
193
- * - plaintext: buffer containing data that needs to be both encrypted and
194
- * authenticated with its size equal to plaintext_length.
195
- * - plaintext_length: size of plaintext buffer, which should be zero if
196
- * plaintext is nullptr.
197
- * - ciphertext_and_tag: buffer that will contain ciphertext and tags the method
198
- * produced. The buffer should not overlap the plaintext buffer, and pointers
199
- * to those buffers should not be equal. Also if the ciphertext+tag buffer is
200
- * nullptr, the plaintext_length should be zero.
201
- * - ciphertext_and_tag_length: size of ciphertext+tag buffer, which should be
202
- * at least as long as the one returned from method
203
- * gsec_aead_crypter_max_ciphertext_and_tag_length.
204
- * - bytes_written: the actual number of bytes written to the ciphertext+tag
205
- * buffer. If bytes_written is nullptr, the plaintext_length should be zero.
206
- * - error_details: a buffer containing an error message if the method does not
207
- * function correctly. It is legal to pass nullptr into error_details, and
208
- * otherwise, the parameter should be freed with gpr_free.
209
- *
210
- * On the success of encryption, the method returns GRPC_STATUS_OK. Otherwise,
211
- * it returns an error status code along with its details specified in
212
- * error_details (if error_details is not nullptr).
213
- *
214
- */
182
+ ///
183
+ /// This method performs an AEAD encrypt operation.
184
+ ///
185
+ ///- crypter: AEAD crypter instance.
186
+ ///- nonce: buffer containing a nonce with its size equal to nonce_length.
187
+ ///- nonce_length: size of nonce buffer, and must be equal to the value returned
188
+ /// from method gsec_aead_crypter_nonce_length.
189
+ ///- aad: buffer containing data that needs to be authenticated but not
190
+ /// encrypted with its size equal to aad_length.
191
+ ///- aad_length: size of aad buffer, which should be zero if the buffer is
192
+ /// nullptr.
193
+ ///- plaintext: buffer containing data that needs to be both encrypted and
194
+ /// authenticated with its size equal to plaintext_length.
195
+ ///- plaintext_length: size of plaintext buffer, which should be zero if
196
+ /// plaintext is nullptr.
197
+ ///- ciphertext_and_tag: buffer that will contain ciphertext and tags the method
198
+ /// produced. The buffer should not overlap the plaintext buffer, and pointers
199
+ /// to those buffers should not be equal. Also if the ciphertext+tag buffer is
200
+ /// nullptr, the plaintext_length should be zero.
201
+ ///- ciphertext_and_tag_length: size of ciphertext+tag buffer, which should be
202
+ /// at least as long as the one returned from method
203
+ /// gsec_aead_crypter_max_ciphertext_and_tag_length.
204
+ ///- bytes_written: the actual number of bytes written to the ciphertext+tag
205
+ /// buffer. If bytes_written is nullptr, the plaintext_length should be zero.
206
+ ///- error_details: a buffer containing an error message if the method does not
207
+ /// function correctly. It is legal to pass nullptr into error_details, and
208
+ /// otherwise, the parameter should be freed with gpr_free.
209
+ ///
210
+ /// On the success of encryption, the method returns GRPC_STATUS_OK. Otherwise,
211
+ /// it returns an error status code along with its details specified in
212
+ /// error_details (if error_details is not nullptr).
213
+ ///
214
+ ///
215
215
  grpc_status_code gsec_aead_crypter_encrypt(
216
216
  gsec_aead_crypter* crypter, const uint8_t* nonce, size_t nonce_length,
217
217
  const uint8_t* aad, size_t aad_length, const uint8_t* plaintext,
@@ -219,32 +219,32 @@ grpc_status_code gsec_aead_crypter_encrypt(
219
219
  size_t ciphertext_and_tag_length, size_t* bytes_written,
220
220
  char** error_details);
221
221
 
222
- /**
223
- * This method performs an AEAD encrypt operation.
224
- *
225
- * - crypter: AEAD crypter instance.
226
- * - nonce: buffer containing a nonce with its size equal to nonce_length.
227
- * - nonce_length: size of nonce buffer, and must be equal to the value returned
228
- * from method gsec_aead_crypter_nonce_length.
229
- * - aad_vec: an iovec array containing data that needs to be authenticated but
230
- * not encrypted.
231
- * - aad_vec_length: the array length of aad_vec.
232
- * - plaintext_vec: an iovec array containing data that needs to be both
233
- * encrypted and authenticated.
234
- * - plaintext_vec_length: the array length of plaintext_vec.
235
- * - ciphertext_vec: an iovec containing a ciphertext buffer. The buffer should
236
- * not overlap the plaintext buffer.
237
- * - ciphertext_bytes_written: the actual number of bytes written to
238
- * ciphertext_vec.
239
- * - error_details: a buffer containing an error message if the method does not
240
- * function correctly. It is legal to pass nullptr into error_details, and
241
- * otherwise, the parameter should be freed with gpr_free.
242
- *
243
- * On the success of encryption, the method returns GRPC_STATUS_OK. Otherwise,
244
- * it returns an error status code along with its details specified in
245
- * error_details (if error_details is not nullptr).
246
- *
247
- */
222
+ ///
223
+ /// This method performs an AEAD encrypt operation.
224
+ ///
225
+ ///- crypter: AEAD crypter instance.
226
+ ///- nonce: buffer containing a nonce with its size equal to nonce_length.
227
+ ///- nonce_length: size of nonce buffer, and must be equal to the value returned
228
+ /// from method gsec_aead_crypter_nonce_length.
229
+ ///- aad_vec: an iovec array containing data that needs to be authenticated but
230
+ /// not encrypted.
231
+ ///- aad_vec_length: the array length of aad_vec.
232
+ ///- plaintext_vec: an iovec array containing data that needs to be both
233
+ /// encrypted and authenticated.
234
+ ///- plaintext_vec_length: the array length of plaintext_vec.
235
+ ///- ciphertext_vec: an iovec containing a ciphertext buffer. The buffer should
236
+ /// not overlap the plaintext buffer.
237
+ ///- ciphertext_bytes_written: the actual number of bytes written to
238
+ /// ciphertext_vec.
239
+ ///- error_details: a buffer containing an error message if the method does not
240
+ /// function correctly. It is legal to pass nullptr into error_details, and
241
+ /// otherwise, the parameter should be freed with gpr_free.
242
+ ///
243
+ /// On the success of encryption, the method returns GRPC_STATUS_OK. Otherwise,
244
+ /// it returns an error status code along with its details specified in
245
+ /// error_details (if error_details is not nullptr).
246
+ ///
247
+ ///
248
248
  grpc_status_code gsec_aead_crypter_encrypt_iovec(
249
249
  gsec_aead_crypter* crypter, const uint8_t* nonce, size_t nonce_length,
250
250
  const struct iovec* aad_vec, size_t aad_vec_length,
@@ -252,67 +252,67 @@ grpc_status_code gsec_aead_crypter_encrypt_iovec(
252
252
  struct iovec ciphertext_vec, size_t* ciphertext_bytes_written,
253
253
  char** error_details);
254
254
 
255
- /**
256
- * This method performs an AEAD decrypt operation.
257
- *
258
- * - crypter: AEAD crypter instance.
259
- * - nonce: buffer containing a nonce with its size equal to nonce_length.
260
- * - nonce_length: size of nonce buffer, and must be equal to the value returned
261
- * from method gsec_aead_crypter_nonce_length.
262
- * - aad: buffer containing data that needs to be authenticated only.
263
- * - aad_length: size of aad buffer, which should be zero if the buffer is
264
- * nullptr.
265
- * - ciphertext_and_tag: buffer containing ciphertext and tag.
266
- * - ciphertext_and_tag_length: length of ciphertext and tag. It should be zero
267
- * if any of plaintext, ciphertext_and_tag, or bytes_written is nullptr. Also,
268
- * ciphertext_and_tag_length should be at least as large as the tag length set
269
- * at AEAD crypter instance construction time.
270
- * - plaintext: buffer containing decrypted and authenticated data the method
271
- * produced. The buffer should not overlap with the ciphertext+tag buffer, and
272
- * pointers to those buffers should not be equal.
273
- * - plaintext_length: size of plaintext buffer, which should be at least as
274
- * long as the one returned from gsec_aead_crypter_max_plaintext_length
275
- * method.
276
- * - bytes_written: the actual number of bytes written to the plaintext
277
- * buffer.
278
- * - error_details: a buffer containing an error message if the method does not
279
- * function correctly. It is legal to pass nullptr into error_details, and
280
- * otherwise, the parameter should be freed with gpr_free.
281
- *
282
- * On the success of decryption, the method returns GRPC_STATUS_OK. Otherwise,
283
- * it returns an error status code along with its details specified in
284
- * error_details (if error_details is not nullptr).
285
- */
255
+ ///
256
+ /// This method performs an AEAD decrypt operation.
257
+ ///
258
+ ///- crypter: AEAD crypter instance.
259
+ ///- nonce: buffer containing a nonce with its size equal to nonce_length.
260
+ ///- nonce_length: size of nonce buffer, and must be equal to the value returned
261
+ /// from method gsec_aead_crypter_nonce_length.
262
+ ///- aad: buffer containing data that needs to be authenticated only.
263
+ ///- aad_length: size of aad buffer, which should be zero if the buffer is
264
+ /// nullptr.
265
+ ///- ciphertext_and_tag: buffer containing ciphertext and tag.
266
+ ///- ciphertext_and_tag_length: length of ciphertext and tag. It should be zero
267
+ /// if any of plaintext, ciphertext_and_tag, or bytes_written is nullptr. Also,
268
+ /// ciphertext_and_tag_length should be at least as large as the tag length set
269
+ /// at AEAD crypter instance construction time.
270
+ ///- plaintext: buffer containing decrypted and authenticated data the method
271
+ /// produced. The buffer should not overlap with the ciphertext+tag buffer, and
272
+ /// pointers to those buffers should not be equal.
273
+ ///- plaintext_length: size of plaintext buffer, which should be at least as
274
+ /// long as the one returned from gsec_aead_crypter_max_plaintext_length
275
+ /// method.
276
+ ///- bytes_written: the actual number of bytes written to the plaintext
277
+ /// buffer.
278
+ ///- error_details: a buffer containing an error message if the method does not
279
+ /// function correctly. It is legal to pass nullptr into error_details, and
280
+ /// otherwise, the parameter should be freed with gpr_free.
281
+ ///
282
+ /// On the success of decryption, the method returns GRPC_STATUS_OK. Otherwise,
283
+ /// it returns an error status code along with its details specified in
284
+ /// error_details (if error_details is not nullptr).
285
+ ///
286
286
  grpc_status_code gsec_aead_crypter_decrypt(
287
287
  gsec_aead_crypter* crypter, const uint8_t* nonce, size_t nonce_length,
288
288
  const uint8_t* aad, size_t aad_length, const uint8_t* ciphertext_and_tag,
289
289
  size_t ciphertext_and_tag_length, uint8_t* plaintext,
290
290
  size_t plaintext_length, size_t* bytes_written, char** error_details);
291
291
 
292
- /**
293
- * This method performs an AEAD decrypt operation.
294
- *
295
- * - crypter: AEAD crypter instance.
296
- * - nonce: buffer containing a nonce with its size equal to nonce_length.
297
- * - nonce_length: size of nonce buffer, and must be equal to the value returned
298
- * from method gsec_aead_crypter_nonce_length.
299
- * - aad_vec: an iovec array containing data that needs to be authenticated but
300
- * not encrypted.
301
- * - aad_vec_length: the array length of aad_vec.
302
- * - ciphertext_vec: an iovec array containing the ciphertext and tag.
303
- * - ciphertext_vec_length: the array length of ciphertext_vec.
304
- * - plaintext_vec: an iovec containing a plaintext buffer. The buffer should
305
- * not overlap the ciphertext buffer.
306
- * - plaintext_bytes_written: the actual number of bytes written to
307
- * plaintext_vec.
308
- * - error_details: a buffer containing an error message if the method does not
309
- * function correctly. It is legal to pass nullptr into error_details, and
310
- * otherwise, the parameter should be freed with gpr_free.
311
- *
312
- * On the success of decryption, the method returns GRPC_STATUS_OK. Otherwise,
313
- * it returns an error status code along with its details specified in
314
- * error_details (if error_details is not nullptr).
315
- */
292
+ ///
293
+ /// This method performs an AEAD decrypt operation.
294
+ ///
295
+ ///- crypter: AEAD crypter instance.
296
+ ///- nonce: buffer containing a nonce with its size equal to nonce_length.
297
+ ///- nonce_length: size of nonce buffer, and must be equal to the value returned
298
+ /// from method gsec_aead_crypter_nonce_length.
299
+ ///- aad_vec: an iovec array containing data that needs to be authenticated but
300
+ /// not encrypted.
301
+ ///- aad_vec_length: the array length of aad_vec.
302
+ ///- ciphertext_vec: an iovec array containing the ciphertext and tag.
303
+ ///- ciphertext_vec_length: the array length of ciphertext_vec.
304
+ ///- plaintext_vec: an iovec containing a plaintext buffer. The buffer should
305
+ /// not overlap the ciphertext buffer.
306
+ ///- plaintext_bytes_written: the actual number of bytes written to
307
+ /// plaintext_vec.
308
+ ///- error_details: a buffer containing an error message if the method does not
309
+ /// function correctly. It is legal to pass nullptr into error_details, and
310
+ /// otherwise, the parameter should be freed with gpr_free.
311
+ ///
312
+ /// On the success of decryption, the method returns GRPC_STATUS_OK. Otherwise,
313
+ /// it returns an error status code along with its details specified in
314
+ /// error_details (if error_details is not nullptr).
315
+ ///
316
316
  grpc_status_code gsec_aead_crypter_decrypt_iovec(
317
317
  gsec_aead_crypter* crypter, const uint8_t* nonce, size_t nonce_length,
318
318
  const struct iovec* aad_vec, size_t aad_vec_length,
@@ -320,135 +320,135 @@ grpc_status_code gsec_aead_crypter_decrypt_iovec(
320
320
  struct iovec plaintext_vec, size_t* plaintext_bytes_written,
321
321
  char** error_details);
322
322
 
323
- /**
324
- * This method computes the size of ciphertext+tag buffer that must be passed to
325
- * gsec_aead_crypter_encrypt function to ensure correct encryption of a
326
- * plaintext. The actual size of ciphertext+tag written to the buffer could be
327
- * smaller.
328
- *
329
- * - crypter: AEAD crypter instance.
330
- * - plaintext_length: length of plaintext.
331
- * - max_ciphertext_and_tag_length_to_return: the size of ciphertext+tag buffer
332
- * the method returns.
333
- * - error_details: a buffer containing an error message if the method does not
334
- * function correctly. It is legal to pass nullptr into error_details, and
335
- * otherwise, the parameter should be freed with gpr_free.
336
- *
337
- * On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
338
- * it returns an error status code along with its details specified in
339
- * error_details (if error_details is not nullptr).
340
- */
323
+ ///
324
+ /// This method computes the size of ciphertext+tag buffer that must be passed
325
+ /// to gsec_aead_crypter_encrypt function to ensure correct encryption of a
326
+ /// plaintext. The actual size of ciphertext+tag written to the buffer could be
327
+ /// smaller.
328
+ ///
329
+ ///- crypter: AEAD crypter instance.
330
+ ///- plaintext_length: length of plaintext.
331
+ ///- max_ciphertext_and_tag_length_to_return: the size of ciphertext+tag buffer
332
+ /// the method returns.
333
+ ///- error_details: a buffer containing an error message if the method does not
334
+ /// function correctly. It is legal to pass nullptr into error_details, and
335
+ /// otherwise, the parameter should be freed with gpr_free.
336
+ ///
337
+ /// On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
338
+ /// it returns an error status code along with its details specified in
339
+ /// error_details (if error_details is not nullptr).
340
+ ///
341
341
  grpc_status_code gsec_aead_crypter_max_ciphertext_and_tag_length(
342
342
  const gsec_aead_crypter* crypter, size_t plaintext_length,
343
343
  size_t* max_ciphertext_and_tag_length_to_return, char** error_details);
344
344
 
345
- /**
346
- * This method computes the size of plaintext buffer that must be passed to
347
- * gsec_aead_crypter_decrypt function to ensure correct decryption of a
348
- * ciphertext. The actual size of plaintext written to the buffer could be
349
- * smaller.
350
- *
351
- * - crypter: AEAD crypter instance.
352
- * - ciphertext_and_tag_length: length of ciphertext and tag.
353
- * - max_plaintext_length_to_return: the size of plaintext buffer the method
354
- * returns.
355
- * - error_details: a buffer containing an error message if the method does not
356
- * function correctly. It is legal to pass nullptr into error_details, and
357
- * otherwise, the parameter should be freed with gpr_free.
358
- *
359
- * On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
360
- * it returns an error status code along with its details specified in
361
- * error_details (if error_details is not nullptr).
362
- */
345
+ ///
346
+ /// This method computes the size of plaintext buffer that must be passed to
347
+ /// gsec_aead_crypter_decrypt function to ensure correct decryption of a
348
+ /// ciphertext. The actual size of plaintext written to the buffer could be
349
+ /// smaller.
350
+ ///
351
+ ///- crypter: AEAD crypter instance.
352
+ ///- ciphertext_and_tag_length: length of ciphertext and tag.
353
+ ///- max_plaintext_length_to_return: the size of plaintext buffer the method
354
+ /// returns.
355
+ ///- error_details: a buffer containing an error message if the method does not
356
+ /// function correctly. It is legal to pass nullptr into error_details, and
357
+ /// otherwise, the parameter should be freed with gpr_free.
358
+ ///
359
+ /// On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
360
+ /// it returns an error status code along with its details specified in
361
+ /// error_details (if error_details is not nullptr).
362
+ ///
363
363
  grpc_status_code gsec_aead_crypter_max_plaintext_length(
364
364
  const gsec_aead_crypter* crypter, size_t ciphertext_and_tag_length,
365
365
  size_t* max_plaintext_length_to_return, char** error_details);
366
366
 
367
- /**
368
- * This method returns a valid size of nonce array used at the construction of
369
- * AEAD crypter instance. It is also the size that should be passed to encrypt
370
- * and decrypt methods executed on the instance.
371
- *
372
- * - crypter: AEAD crypter instance.
373
- * - nonce_length_to_return: the length of nonce array the method returns.
374
- * - error_details: a buffer containing an error message if the method does not
375
- * function correctly. It is legal to pass nullptr into error_details, and
376
- * otherwise, the parameter should be freed with gpr_free.
377
- *
378
- * On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
379
- * it returns an error status code along with its details specified in
380
- * error_details (if error_details is not nullptr).
381
- */
367
+ ///
368
+ /// This method returns a valid size of nonce array used at the construction of
369
+ /// AEAD crypter instance. It is also the size that should be passed to encrypt
370
+ /// and decrypt methods executed on the instance.
371
+ ///
372
+ ///- crypter: AEAD crypter instance.
373
+ ///- nonce_length_to_return: the length of nonce array the method returns.
374
+ ///- error_details: a buffer containing an error message if the method does not
375
+ /// function correctly. It is legal to pass nullptr into error_details, and
376
+ /// otherwise, the parameter should be freed with gpr_free.
377
+ ///
378
+ /// On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
379
+ /// it returns an error status code along with its details specified in
380
+ /// error_details (if error_details is not nullptr).
381
+ ///
382
382
  grpc_status_code gsec_aead_crypter_nonce_length(
383
383
  const gsec_aead_crypter* crypter, size_t* nonce_length_to_return,
384
384
  char** error_details);
385
385
 
386
- /**
387
- * This method returns a valid size of key array used at the construction of
388
- * AEAD crypter instance. It is also the size that should be passed to encrypt
389
- * and decrypt methods executed on the instance.
390
- *
391
- * - crypter: AEAD crypter instance.
392
- * - key_length_to_return: the length of key array the method returns.
393
- * - error_details: a buffer containing an error message if the method does not
394
- * function correctly. It is legal to pass nullptr into error_details, and
395
- * otherwise, the parameter should be freed with gpr_free.
396
- *
397
- * On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
398
- * it returns an error status code along with its details specified in
399
- * error_details (if error_details is not nullptr).
400
- */
386
+ ///
387
+ /// This method returns a valid size of key array used at the construction of
388
+ /// AEAD crypter instance. It is also the size that should be passed to encrypt
389
+ /// and decrypt methods executed on the instance.
390
+ ///
391
+ ///- crypter: AEAD crypter instance.
392
+ ///- key_length_to_return: the length of key array the method returns.
393
+ ///- error_details: a buffer containing an error message if the method does not
394
+ /// function correctly. It is legal to pass nullptr into error_details, and
395
+ /// otherwise, the parameter should be freed with gpr_free.
396
+ ///
397
+ /// On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
398
+ /// it returns an error status code along with its details specified in
399
+ /// error_details (if error_details is not nullptr).
400
+ ///
401
401
  grpc_status_code gsec_aead_crypter_key_length(const gsec_aead_crypter* crypter,
402
402
  size_t* key_length_to_return,
403
403
  char** error_details);
404
- /**
405
- * This method returns a valid size of tag array used at the construction of
406
- * AEAD crypter instance. It is also the size that should be passed to encrypt
407
- * and decrypt methods executed on the instance.
408
- *
409
- * - crypter: AEAD crypter instance.
410
- * - tag_length_to_return: the length of tag array the method returns.
411
- * - error_details: a buffer containing an error message if the method does not
412
- * function correctly. It is legal to pass nullptr into error_details, and
413
- * otherwise, the parameter should be freed with gpr_free.
414
- *
415
- * On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
416
- * it returns an error status code along with its details specified in
417
- * error_details (if error_details is not nullptr).
418
- */
404
+ ///
405
+ /// This method returns a valid size of tag array used at the construction of
406
+ /// AEAD crypter instance. It is also the size that should be passed to encrypt
407
+ /// and decrypt methods executed on the instance.
408
+ ///
409
+ ///- crypter: AEAD crypter instance.
410
+ ///- tag_length_to_return: the length of tag array the method returns.
411
+ ///- error_details: a buffer containing an error message if the method does not
412
+ /// function correctly. It is legal to pass nullptr into error_details, and
413
+ /// otherwise, the parameter should be freed with gpr_free.
414
+ ///
415
+ /// On the success of execution, the method returns GRPC_STATUS_OK. Otherwise,
416
+ /// it returns an error status code along with its details specified in
417
+ /// error_details (if error_details is not nullptr).
418
+ ///
419
419
  grpc_status_code gsec_aead_crypter_tag_length(const gsec_aead_crypter* crypter,
420
420
  size_t* tag_length_to_return,
421
421
  char** error_details);
422
422
 
423
- /**
424
- * This method destroys an AEAD crypter instance by de-allocating all of its
425
- * occupied memory.
426
- *
427
- * - crypter: AEAD crypter instance that needs to be destroyed.
428
- */
423
+ ///
424
+ /// This method destroys an AEAD crypter instance by de-allocating all of its
425
+ /// occupied memory.
426
+ ///
427
+ ///- crypter: AEAD crypter instance that needs to be destroyed.
428
+ ///
429
429
  void gsec_aead_crypter_destroy(gsec_aead_crypter* crypter);
430
430
 
431
- /**
432
- * This method creates an AEAD crypter instance of AES-GCM encryption scheme
433
- * which supports 16 and 32 bytes long keys, 12 and 16 bytes long nonces, and
434
- * 16 bytes long tags. It should be noted that once the lengths of key, nonce,
435
- * and tag are determined at construction time, they cannot be modified later.
436
- *
437
- * - key: buffer containing a key which is binded with AEAD crypter instance.
438
- * - key_length: length of a key in bytes, which should be 44 if rekeying is
439
- * enabled and 16 or 32 otherwise.
440
- * - nonce_length: length of a nonce in bytes, which should be either 12 or 16.
441
- * - tag_length: length of a tag in bytes, which should be always 16.
442
- * - rekey: enable nonce-based rekeying and nonce-masking.
443
- * - crypter: address of AES_GCM crypter instance returned from the method.
444
- * - error_details: a buffer containing an error message if the method does not
445
- * function correctly. It is legal to pass nullptr into error_details, and
446
- * otherwise, the parameter should be freed with gpr_free.
447
- *
448
- * On success of instance creation, it stores the address of instance at
449
- * crypter. Otherwise, it returns an error status code together with its details
450
- * specified in error_details.
451
- */
431
+ ///
432
+ /// This method creates an AEAD crypter instance of AES-GCM encryption scheme
433
+ /// which supports 16 and 32 bytes long keys, 12 and 16 bytes long nonces, and
434
+ /// 16 bytes long tags. It should be noted that once the lengths of key, nonce,
435
+ /// and tag are determined at construction time, they cannot be modified later.
436
+ ///
437
+ ///- key: buffer containing a key which is binded with AEAD crypter instance.
438
+ ///- key_length: length of a key in bytes, which should be 44 if rekeying is
439
+ /// enabled and 16 or 32 otherwise.
440
+ ///- nonce_length: length of a nonce in bytes, which should be either 12 or 16.
441
+ ///- tag_length: length of a tag in bytes, which should be always 16.
442
+ ///- rekey: enable nonce-based rekeying and nonce-masking.
443
+ ///- crypter: address of AES_GCM crypter instance returned from the method.
444
+ ///- error_details: a buffer containing an error message if the method does not
445
+ /// function correctly. It is legal to pass nullptr into error_details, and
446
+ /// otherwise, the parameter should be freed with gpr_free.
447
+ ///
448
+ /// On success of instance creation, it stores the address of instance at
449
+ /// crypter. Otherwise, it returns an error status code together with its
450
+ /// details specified in error_details.
451
+ ///
452
452
  grpc_status_code gsec_aes_gcm_aead_crypter_create(const uint8_t* key,
453
453
  size_t key_length,
454
454
  size_t nonce_length,
@@ -456,4 +456,4 @@ grpc_status_code gsec_aes_gcm_aead_crypter_create(const uint8_t* key,
456
456
  gsec_aead_crypter** crypter,
457
457
  char** error_details);
458
458
 
459
- #endif /* GRPC_CORE_TSI_ALTS_CRYPT_GSEC_H */
459
+ #endif // GRPC_CORE_TSI_ALTS_CRYPT_GSEC_H