grpc 1.33.0.pre1 → 1.34.0

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

Potentially problematic release.


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

Files changed (533) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +342 -134
  3. data/include/grpc/grpc.h +1 -2
  4. data/include/grpc/grpc_security.h +149 -172
  5. data/include/grpc/impl/codegen/grpc_types.h +9 -2
  6. data/include/grpc/impl/codegen/port_platform.h +22 -55
  7. data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
  8. data/src/core/ext/filters/client_channel/config_selector.h +2 -3
  9. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
  10. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  11. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
  13. data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  18. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
  19. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
  21. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
  28. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  29. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  32. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  33. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  34. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  35. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
  36. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
  37. data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
  38. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
  39. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
  40. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
  41. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
  42. data/src/core/ext/filters/client_channel/server_address.h +0 -4
  43. data/src/core/ext/filters/client_channel/service_config.cc +3 -1
  44. data/src/core/ext/filters/client_channel/service_config.h +1 -1
  45. data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
  46. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  47. data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
  48. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  49. data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
  50. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  51. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
  52. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  53. data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
  54. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
  55. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
  56. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  57. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
  58. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
  59. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
  61. data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
  62. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  63. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
  64. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  65. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  66. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  67. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  68. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  69. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  70. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  71. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  72. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  73. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  74. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  75. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  76. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  77. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  78. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  79. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  80. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  81. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  82. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  83. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  84. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  85. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  86. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  87. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  92. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  94. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  101. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  102. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  103. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  104. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  105. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  106. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  107. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  109. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  110. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  111. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  112. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  113. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  114. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  115. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  116. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  117. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  118. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  119. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  120. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  121. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  122. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  123. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  124. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  125. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  126. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  127. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  128. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  129. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  130. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  131. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  132. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  133. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  134. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  135. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  136. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  137. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  138. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  139. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  140. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  141. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  142. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  143. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  144. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  145. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  146. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  147. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  148. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  149. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  150. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  151. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  152. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  153. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  154. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  155. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  156. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  157. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  158. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  159. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  160. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  161. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  162. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  163. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  164. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  165. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  166. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  167. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  168. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  169. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  170. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  171. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  172. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  173. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  174. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  175. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  176. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  177. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  178. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  179. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  180. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
  181. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  182. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  183. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  184. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
  185. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  186. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  187. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  188. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  189. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  190. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
  191. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  192. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  193. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  194. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  195. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  196. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  197. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  198. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  199. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  200. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  201. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  202. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  203. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  204. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  205. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  206. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  207. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  208. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  209. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  210. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  211. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  212. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  213. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  214. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  215. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  216. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  217. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  218. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  219. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  220. data/src/core/ext/xds/certificate_provider_factory.h +7 -5
  221. data/src/core/ext/xds/certificate_provider_store.cc +84 -0
  222. data/src/core/ext/xds/certificate_provider_store.h +65 -8
  223. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
  224. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
  225. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
  226. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
  227. data/src/core/ext/xds/xds_api.cc +241 -718
  228. data/src/core/ext/xds/xds_api.h +50 -9
  229. data/src/core/ext/xds/xds_bootstrap.cc +172 -25
  230. data/src/core/ext/xds/xds_bootstrap.h +23 -7
  231. data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
  232. data/src/core/ext/xds/xds_certificate_provider.h +74 -0
  233. data/src/core/ext/xds/xds_client.cc +161 -128
  234. data/src/core/ext/xds/xds_client.h +12 -11
  235. data/src/core/ext/xds/xds_client_stats.cc +41 -4
  236. data/src/core/ext/xds/xds_client_stats.h +2 -2
  237. data/src/core/lib/channel/channel_args.cc +2 -1
  238. data/src/core/lib/channel/channel_trace.cc +4 -2
  239. data/src/core/lib/channel/channelz.h +2 -2
  240. data/src/core/lib/channel/handshaker.h +2 -2
  241. data/src/core/lib/compression/compression.cc +8 -4
  242. data/src/core/lib/compression/compression_internal.cc +10 -5
  243. data/src/core/lib/compression/compression_internal.h +2 -1
  244. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  245. data/src/core/lib/debug/stats_data.cc +1 -0
  246. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  247. data/src/core/lib/gpr/log_linux.cc +17 -3
  248. data/src/core/lib/gpr/log_posix.cc +13 -1
  249. data/src/core/lib/gpr/log_windows.cc +16 -4
  250. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  251. data/src/core/lib/gpr/string.cc +1 -1
  252. data/src/core/lib/gpr/time_precise.cc +3 -2
  253. data/src/core/lib/gpr/tls.h +4 -0
  254. data/src/core/lib/gpr/tls_msvc.h +2 -0
  255. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  256. data/src/core/lib/gpr/useful.h +5 -4
  257. data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
  258. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  259. data/src/core/lib/gprpp/examine_stack.h +46 -0
  260. data/src/core/lib/gprpp/fork.cc +2 -2
  261. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  262. data/src/core/lib/gprpp/orphanable.h +4 -8
  263. data/src/core/lib/gprpp/ref_counted.h +40 -46
  264. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
  265. data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
  266. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  267. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  268. data/src/core/lib/gprpp/thd.h +2 -2
  269. data/src/core/lib/gprpp/thd_posix.cc +36 -36
  270. data/src/core/lib/http/parser.cc +46 -25
  271. data/src/core/lib/iomgr/error.cc +2 -1
  272. data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
  273. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  274. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  275. data/src/core/lib/iomgr/executor/threadpool.h +3 -3
  276. data/src/core/lib/iomgr/parse_address.cc +84 -6
  277. data/src/core/lib/iomgr/parse_address.h +20 -0
  278. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  279. data/src/core/lib/iomgr/python_util.h +3 -3
  280. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  281. data/src/core/lib/iomgr/tcp_posix.cc +3 -2
  282. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  283. data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
  284. data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
  285. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
  286. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  287. data/src/core/lib/json/json.h +2 -2
  288. data/src/core/lib/json/json_reader.cc +8 -4
  289. data/src/core/lib/json/json_util.h +167 -0
  290. data/src/core/lib/json/json_writer.cc +2 -1
  291. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
  292. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
  293. data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
  294. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
  295. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
  296. data/src/core/lib/security/context/security_context.h +3 -1
  297. data/src/core/lib/security/credentials/credentials.cc +1 -1
  298. data/src/core/lib/security/credentials/credentials.h +3 -3
  299. data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
  300. data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
  301. data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
  302. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  303. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  304. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  305. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
  306. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
  307. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
  308. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  309. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  310. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
  312. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
  313. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
  314. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
  315. data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
  316. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
  317. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
  318. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  319. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  320. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  321. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
  322. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
  323. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  324. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  325. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  326. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  327. data/src/core/lib/security/security_connector/security_connector.h +4 -2
  328. data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
  329. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
  330. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
  331. data/src/core/lib/security/transport/security_handshaker.cc +1 -1
  332. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  333. data/src/core/lib/security/util/json_util.h +1 -0
  334. data/src/core/lib/slice/slice.cc +7 -4
  335. data/src/core/lib/slice/slice_buffer.cc +2 -1
  336. data/src/core/lib/slice/slice_intern.cc +2 -2
  337. data/src/core/lib/surface/call.cc +9 -8
  338. data/src/core/lib/surface/completion_queue.cc +7 -6
  339. data/src/core/lib/surface/server.cc +4 -2
  340. data/src/core/lib/surface/server.h +2 -2
  341. data/src/core/lib/surface/validate_metadata.h +3 -0
  342. data/src/core/lib/surface/version.cc +2 -2
  343. data/src/core/lib/transport/authority_override.h +2 -0
  344. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  345. data/src/core/lib/transport/byte_stream.h +3 -3
  346. data/src/core/lib/transport/connectivity_state.h +3 -3
  347. data/src/core/lib/transport/metadata.h +2 -2
  348. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  349. data/src/core/lib/transport/transport.cc +5 -3
  350. data/src/core/lib/transport/transport.h +1 -1
  351. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  352. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
  353. data/src/core/tsi/fake_transport_security.cc +1 -0
  354. data/src/core/tsi/local_transport_security.cc +5 -1
  355. data/src/core/tsi/local_transport_security.h +6 -7
  356. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  357. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  358. data/src/core/tsi/ssl_transport_security.cc +14 -7
  359. data/src/core/tsi/ssl_transport_security.h +3 -0
  360. data/src/core/tsi/transport_security.cc +4 -2
  361. data/src/ruby/ext/grpc/extconf.rb +1 -1
  362. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
  363. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
  364. data/src/ruby/lib/grpc/version.rb +1 -1
  365. data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
  366. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  367. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  368. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  369. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  370. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  371. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  372. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
  373. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  374. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  375. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
  376. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  377. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  378. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  379. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  380. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  381. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  382. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  383. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  384. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  385. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  386. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  387. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  388. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  389. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  390. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  391. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  392. data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
  393. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
  394. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  395. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
  396. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  397. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
  398. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
  399. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
  400. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
  401. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
  402. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
  403. data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
  404. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
  405. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
  406. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
  407. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
  408. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
  409. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
  410. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
  411. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
  412. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
  413. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
  414. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
  415. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  416. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
  417. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  418. data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
  419. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  420. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  421. data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
  422. data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
  423. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  424. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  425. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  426. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  427. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  428. data/third_party/abseil-cpp/absl/status/status.cc +4 -6
  429. data/third_party/abseil-cpp/absl/status/status.h +502 -113
  430. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
  431. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  432. data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
  433. data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
  434. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  435. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  436. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  437. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  438. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  439. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
  440. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  441. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  442. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  452. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  453. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  454. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  455. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  456. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  457. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  458. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  459. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  460. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  461. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  462. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
  463. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
  464. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
  465. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
  466. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
  467. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
  468. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
  469. data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
  470. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  471. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  472. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  473. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  485. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  486. data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
  487. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  488. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  489. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  490. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  491. data/third_party/boringssl-with-bazel/err_data.c +340 -336
  492. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  494. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
  495. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
  497. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
  498. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
  499. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  501. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  502. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  503. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  504. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  505. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
  506. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
  507. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  508. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  509. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  511. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
  512. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  513. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
  514. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
  515. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  516. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
  517. data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
  520. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
  524. data/third_party/upb/upb/def.c +2169 -0
  525. data/third_party/upb/upb/def.h +330 -0
  526. data/third_party/upb/upb/def.hpp +525 -0
  527. data/third_party/upb/upb/reflection.c +391 -0
  528. data/third_party/upb/upb/reflection.h +168 -0
  529. data/third_party/upb/upb/text_encode.c +398 -0
  530. data/third_party/upb/upb/text_encode.h +35 -0
  531. metadata +227 -37
  532. data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
  533. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -0,0 +1,391 @@
1
+
2
+ #include "upb/reflection.h"
3
+
4
+ #include <string.h>
5
+ #include "upb/table.int.h"
6
+ #include "upb/msg.h"
7
+
8
+ #include "upb/port_def.inc"
9
+
10
+ static size_t get_field_size(const upb_msglayout_field *f) {
11
+ static unsigned char sizes[] = {
12
+ 0,/* 0 */
13
+ 8, /* UPB_DESCRIPTOR_TYPE_DOUBLE */
14
+ 4, /* UPB_DESCRIPTOR_TYPE_FLOAT */
15
+ 8, /* UPB_DESCRIPTOR_TYPE_INT64 */
16
+ 8, /* UPB_DESCRIPTOR_TYPE_UINT64 */
17
+ 4, /* UPB_DESCRIPTOR_TYPE_INT32 */
18
+ 8, /* UPB_DESCRIPTOR_TYPE_FIXED64 */
19
+ 4, /* UPB_DESCRIPTOR_TYPE_FIXED32 */
20
+ 1, /* UPB_DESCRIPTOR_TYPE_BOOL */
21
+ sizeof(upb_strview), /* UPB_DESCRIPTOR_TYPE_STRING */
22
+ sizeof(void*), /* UPB_DESCRIPTOR_TYPE_GROUP */
23
+ sizeof(void*), /* UPB_DESCRIPTOR_TYPE_MESSAGE */
24
+ sizeof(upb_strview), /* UPB_DESCRIPTOR_TYPE_BYTES */
25
+ 4, /* UPB_DESCRIPTOR_TYPE_UINT32 */
26
+ 4, /* UPB_DESCRIPTOR_TYPE_ENUM */
27
+ 4, /* UPB_DESCRIPTOR_TYPE_SFIXED32 */
28
+ 8, /* UPB_DESCRIPTOR_TYPE_SFIXED64 */
29
+ 4, /* UPB_DESCRIPTOR_TYPE_SINT32 */
30
+ 8, /* UPB_DESCRIPTOR_TYPE_SINT64 */
31
+ };
32
+ return _upb_repeated_or_map(f) ? sizeof(void *) : sizes[f->descriptortype];
33
+ }
34
+
35
+ /* Strings/bytes are special-cased in maps. */
36
+ static char _upb_fieldtype_to_mapsize[12] = {
37
+ 0,
38
+ 1, /* UPB_TYPE_BOOL */
39
+ 4, /* UPB_TYPE_FLOAT */
40
+ 4, /* UPB_TYPE_INT32 */
41
+ 4, /* UPB_TYPE_UINT32 */
42
+ 4, /* UPB_TYPE_ENUM */
43
+ sizeof(void*), /* UPB_TYPE_MESSAGE */
44
+ 8, /* UPB_TYPE_DOUBLE */
45
+ 8, /* UPB_TYPE_INT64 */
46
+ 8, /* UPB_TYPE_UINT64 */
47
+ 0, /* UPB_TYPE_STRING */
48
+ 0, /* UPB_TYPE_BYTES */
49
+ };
50
+
51
+ /** upb_msg *******************************************************************/
52
+
53
+ upb_msg *upb_msg_new(const upb_msgdef *m, upb_arena *a) {
54
+ return _upb_msg_new(upb_msgdef_layout(m), a);
55
+ }
56
+
57
+ static bool in_oneof(const upb_msglayout_field *field) {
58
+ return field->presence < 0;
59
+ }
60
+
61
+ static upb_msgval _upb_msg_getraw(const upb_msg *msg, const upb_fielddef *f) {
62
+ const upb_msglayout_field *field = upb_fielddef_layout(f);
63
+ const char *mem = UPB_PTR_AT(msg, field->offset, char);
64
+ upb_msgval val = {0};
65
+ memcpy(&val, mem, get_field_size(field));
66
+ return val;
67
+ }
68
+
69
+ bool upb_msg_has(const upb_msg *msg, const upb_fielddef *f) {
70
+ const upb_msglayout_field *field = upb_fielddef_layout(f);
71
+ if (in_oneof(field)) {
72
+ return _upb_getoneofcase_field(msg, field) == field->number;
73
+ } else if (field->presence > 0) {
74
+ return _upb_hasbit_field(msg, field);
75
+ } else {
76
+ UPB_ASSERT(field->descriptortype == UPB_DESCRIPTOR_TYPE_MESSAGE ||
77
+ field->descriptortype == UPB_DESCRIPTOR_TYPE_GROUP);
78
+ return _upb_msg_getraw(msg, f).msg_val != NULL;
79
+ }
80
+ }
81
+
82
+ const upb_fielddef *upb_msg_whichoneof(const upb_msg *msg,
83
+ const upb_oneofdef *o) {
84
+ upb_oneof_iter i;
85
+ const upb_fielddef *f;
86
+ const upb_msglayout_field *field;
87
+ const upb_msgdef *m = upb_oneofdef_containingtype(o);
88
+ uint32_t oneof_case;
89
+
90
+ /* This is far from optimal. */
91
+ upb_oneof_begin(&i, o);
92
+ if (upb_oneof_done(&i)) return false;
93
+ f = upb_oneof_iter_field(&i);
94
+ field = upb_fielddef_layout(f);
95
+ oneof_case = _upb_getoneofcase_field(msg, field);
96
+
97
+ return oneof_case ? upb_msgdef_itof(m, oneof_case) : NULL;
98
+ }
99
+
100
+ upb_msgval upb_msg_get(const upb_msg *msg, const upb_fielddef *f) {
101
+ if (!upb_fielddef_haspresence(f) || upb_msg_has(msg, f)) {
102
+ return _upb_msg_getraw(msg, f);
103
+ } else {
104
+ /* TODO(haberman): change upb_fielddef to not require this switch(). */
105
+ upb_msgval val = {0};
106
+ switch (upb_fielddef_type(f)) {
107
+ case UPB_TYPE_INT32:
108
+ case UPB_TYPE_ENUM:
109
+ val.int32_val = upb_fielddef_defaultint32(f);
110
+ break;
111
+ case UPB_TYPE_INT64:
112
+ val.int64_val = upb_fielddef_defaultint64(f);
113
+ break;
114
+ case UPB_TYPE_UINT32:
115
+ val.uint32_val = upb_fielddef_defaultuint32(f);
116
+ break;
117
+ case UPB_TYPE_UINT64:
118
+ val.uint64_val = upb_fielddef_defaultuint64(f);
119
+ break;
120
+ case UPB_TYPE_FLOAT:
121
+ val.float_val = upb_fielddef_defaultfloat(f);
122
+ break;
123
+ case UPB_TYPE_DOUBLE:
124
+ val.double_val = upb_fielddef_defaultdouble(f);
125
+ break;
126
+ case UPB_TYPE_BOOL:
127
+ val.double_val = upb_fielddef_defaultbool(f);
128
+ break;
129
+ case UPB_TYPE_STRING:
130
+ case UPB_TYPE_BYTES:
131
+ val.str_val.data = upb_fielddef_defaultstr(f, &val.str_val.size);
132
+ break;
133
+ case UPB_TYPE_MESSAGE:
134
+ val.msg_val = NULL;
135
+ break;
136
+ }
137
+ return val;
138
+ }
139
+ }
140
+
141
+ upb_mutmsgval upb_msg_mutable(upb_msg *msg, const upb_fielddef *f,
142
+ upb_arena *a) {
143
+ const upb_msglayout_field *field = upb_fielddef_layout(f);
144
+ upb_mutmsgval ret;
145
+ char *mem = UPB_PTR_AT(msg, field->offset, char);
146
+ bool wrong_oneof =
147
+ in_oneof(field) && _upb_getoneofcase_field(msg, field) != field->number;
148
+
149
+ memcpy(&ret, mem, sizeof(void*));
150
+
151
+ if (a && (!ret.msg || wrong_oneof)) {
152
+ if (upb_fielddef_ismap(f)) {
153
+ const upb_msgdef *entry = upb_fielddef_msgsubdef(f);
154
+ const upb_fielddef *key = upb_msgdef_itof(entry, UPB_MAPENTRY_KEY);
155
+ const upb_fielddef *value = upb_msgdef_itof(entry, UPB_MAPENTRY_VALUE);
156
+ ret.map = upb_map_new(a, upb_fielddef_type(key), upb_fielddef_type(value));
157
+ } else if (upb_fielddef_isseq(f)) {
158
+ ret.array = upb_array_new(a, upb_fielddef_type(f));
159
+ } else {
160
+ UPB_ASSERT(upb_fielddef_issubmsg(f));
161
+ ret.msg = upb_msg_new(upb_fielddef_msgsubdef(f), a);
162
+ }
163
+
164
+ memcpy(mem, &ret, sizeof(void*));
165
+
166
+ if (wrong_oneof) {
167
+ *_upb_oneofcase_field(msg, field) = field->number;
168
+ } else if (field->presence > 0) {
169
+ _upb_sethas_field(msg, field);
170
+ }
171
+ }
172
+ return ret;
173
+ }
174
+
175
+ void upb_msg_set(upb_msg *msg, const upb_fielddef *f, upb_msgval val,
176
+ upb_arena *a) {
177
+ const upb_msglayout_field *field = upb_fielddef_layout(f);
178
+ char *mem = UPB_PTR_AT(msg, field->offset, char);
179
+ UPB_UNUSED(a); /* We reserve the right to make set insert into a map. */
180
+ memcpy(mem, &val, get_field_size(field));
181
+ if (field->presence > 0) {
182
+ _upb_sethas_field(msg, field);
183
+ } else if (in_oneof(field)) {
184
+ *_upb_oneofcase_field(msg, field) = field->number;
185
+ }
186
+ }
187
+
188
+ void upb_msg_clearfield(upb_msg *msg, const upb_fielddef *f) {
189
+ const upb_msglayout_field *field = upb_fielddef_layout(f);
190
+ char *mem = UPB_PTR_AT(msg, field->offset, char);
191
+
192
+ if (field->presence > 0) {
193
+ _upb_clearhas_field(msg, field);
194
+ } else if (in_oneof(field)) {
195
+ uint32_t *oneof_case = _upb_oneofcase_field(msg, field);
196
+ if (*oneof_case != field->number) return;
197
+ *oneof_case = 0;
198
+ }
199
+
200
+ memset(mem, 0, get_field_size(field));
201
+ }
202
+
203
+ void upb_msg_clear(upb_msg *msg, const upb_msgdef *m) {
204
+ _upb_msg_clear(msg, upb_msgdef_layout(m));
205
+ }
206
+
207
+ bool upb_msg_next(const upb_msg *msg, const upb_msgdef *m,
208
+ const upb_symtab *ext_pool, const upb_fielddef **out_f,
209
+ upb_msgval *out_val, size_t *iter) {
210
+ size_t i = *iter;
211
+ const upb_msgval zero = {0};
212
+ const upb_fielddef *f;
213
+ UPB_UNUSED(ext_pool);
214
+ while ((f = _upb_msgdef_field(m, (int)++i)) != NULL) {
215
+ upb_msgval val = _upb_msg_getraw(msg, f);
216
+
217
+ /* Skip field if unset or empty. */
218
+ if (upb_fielddef_haspresence(f)) {
219
+ if (!upb_msg_has(msg, f)) continue;
220
+ } else {
221
+ upb_msgval test = val;
222
+ if (upb_fielddef_isstring(f) && !upb_fielddef_isseq(f)) {
223
+ /* Clear string pointer, only size matters (ptr could be non-NULL). */
224
+ test.str_val.data = NULL;
225
+ }
226
+ /* Continue if NULL or 0. */
227
+ if (memcmp(&test, &zero, sizeof(test)) == 0) continue;
228
+
229
+ /* Continue on empty array or map. */
230
+ if (upb_fielddef_ismap(f)) {
231
+ if (upb_map_size(test.map_val) == 0) continue;
232
+ } else if (upb_fielddef_isseq(f)) {
233
+ if (upb_array_size(test.array_val) == 0) continue;
234
+ }
235
+ }
236
+
237
+ *out_val = val;
238
+ *out_f = f;
239
+ *iter = i;
240
+ return true;
241
+ }
242
+ *iter = i;
243
+ return false;
244
+ }
245
+
246
+ bool _upb_msg_discardunknown(upb_msg *msg, const upb_msgdef *m, int depth) {
247
+ size_t iter = UPB_MSG_BEGIN;
248
+ const upb_fielddef *f;
249
+ upb_msgval val;
250
+ bool ret = true;
251
+
252
+ if (--depth == 0) return false;
253
+
254
+ _upb_msg_discardunknown_shallow(msg);
255
+
256
+ while (upb_msg_next(msg, m, NULL /*ext_pool*/, &f, &val, &iter)) {
257
+ const upb_msgdef *subm = upb_fielddef_msgsubdef(f);
258
+ if (!subm) continue;
259
+ if (upb_fielddef_ismap(f)) {
260
+ const upb_fielddef *val_f = upb_msgdef_itof(subm, 2);
261
+ const upb_msgdef *val_m = upb_fielddef_msgsubdef(val_f);
262
+ upb_map *map = (upb_map*)val.map_val;
263
+ size_t iter = UPB_MAP_BEGIN;
264
+
265
+ if (!val_m) continue;
266
+
267
+ while (upb_mapiter_next(map, &iter)) {
268
+ upb_msgval map_val = upb_mapiter_value(map, iter);
269
+ if (!_upb_msg_discardunknown((upb_msg*)map_val.msg_val, val_m, depth)) {
270
+ ret = false;
271
+ }
272
+ }
273
+ } else if (upb_fielddef_isseq(f)) {
274
+ const upb_array *arr = val.array_val;
275
+ size_t i, n = upb_array_size(arr);
276
+ for (i = 0; i < n; i++) {
277
+ upb_msgval elem = upb_array_get(arr, i);
278
+ if (!_upb_msg_discardunknown((upb_msg*)elem.msg_val, subm, depth)) {
279
+ ret = false;
280
+ }
281
+ }
282
+ } else {
283
+ if (!_upb_msg_discardunknown((upb_msg*)val.msg_val, subm, depth)) {
284
+ ret = false;
285
+ }
286
+ }
287
+ }
288
+
289
+ return ret;
290
+ }
291
+
292
+ bool upb_msg_discardunknown(upb_msg *msg, const upb_msgdef *m, int maxdepth) {
293
+ return _upb_msg_discardunknown(msg, m, maxdepth);
294
+ }
295
+
296
+ /** upb_array *****************************************************************/
297
+
298
+ upb_array *upb_array_new(upb_arena *a, upb_fieldtype_t type) {
299
+ return _upb_array_new(a, type);
300
+ }
301
+
302
+ size_t upb_array_size(const upb_array *arr) {
303
+ return arr->len;
304
+ }
305
+
306
+ upb_msgval upb_array_get(const upb_array *arr, size_t i) {
307
+ upb_msgval ret;
308
+ const char* data = _upb_array_constptr(arr);
309
+ int lg2 = arr->data & 7;
310
+ UPB_ASSERT(i < arr->len);
311
+ memcpy(&ret, data + (i << lg2), 1 << lg2);
312
+ return ret;
313
+ }
314
+
315
+ void upb_array_set(upb_array *arr, size_t i, upb_msgval val) {
316
+ char* data = _upb_array_ptr(arr);
317
+ int lg2 = arr->data & 7;
318
+ UPB_ASSERT(i < arr->len);
319
+ memcpy(data + (i << lg2), &val, 1 << lg2);
320
+ }
321
+
322
+ bool upb_array_append(upb_array *arr, upb_msgval val, upb_arena *arena) {
323
+ if (!_upb_array_realloc(arr, arr->len + 1, arena)) {
324
+ return false;
325
+ }
326
+ arr->len++;
327
+ upb_array_set(arr, arr->len - 1, val);
328
+ return true;
329
+ }
330
+
331
+ bool upb_array_resize(upb_array *arr, size_t size, upb_arena *arena) {
332
+ return _upb_array_resize(arr, size, arena);
333
+ }
334
+
335
+ /** upb_map *******************************************************************/
336
+
337
+ upb_map *upb_map_new(upb_arena *a, upb_fieldtype_t key_type,
338
+ upb_fieldtype_t value_type) {
339
+ return _upb_map_new(a, _upb_fieldtype_to_mapsize[key_type],
340
+ _upb_fieldtype_to_mapsize[value_type]);
341
+ }
342
+
343
+ size_t upb_map_size(const upb_map *map) {
344
+ return _upb_map_size(map);
345
+ }
346
+
347
+ bool upb_map_get(const upb_map *map, upb_msgval key, upb_msgval *val) {
348
+ return _upb_map_get(map, &key, map->key_size, val, map->val_size);
349
+ }
350
+
351
+ bool upb_map_set(upb_map *map, upb_msgval key, upb_msgval val,
352
+ upb_arena *arena) {
353
+ return _upb_map_set(map, &key, map->key_size, &val, map->val_size, arena);
354
+ }
355
+
356
+ bool upb_map_delete(upb_map *map, upb_msgval key) {
357
+ return _upb_map_delete(map, &key, map->key_size);
358
+ }
359
+
360
+ bool upb_mapiter_next(const upb_map *map, size_t *iter) {
361
+ return _upb_map_next(map, iter);
362
+ }
363
+
364
+ bool upb_mapiter_done(const upb_map *map, size_t iter) {
365
+ upb_strtable_iter i;
366
+ UPB_ASSERT(iter != UPB_MAP_BEGIN);
367
+ i.t = &map->table;
368
+ i.index = iter;
369
+ return upb_strtable_done(&i);
370
+ }
371
+
372
+ /* Returns the key and value for this entry of the map. */
373
+ upb_msgval upb_mapiter_key(const upb_map *map, size_t iter) {
374
+ upb_strtable_iter i;
375
+ upb_msgval ret;
376
+ i.t = &map->table;
377
+ i.index = iter;
378
+ _upb_map_fromkey(upb_strtable_iter_key(&i), &ret, map->key_size);
379
+ return ret;
380
+ }
381
+
382
+ upb_msgval upb_mapiter_value(const upb_map *map, size_t iter) {
383
+ upb_strtable_iter i;
384
+ upb_msgval ret;
385
+ i.t = &map->table;
386
+ i.index = iter;
387
+ _upb_map_fromvalue(upb_strtable_iter_value(&i), &ret, map->val_size);
388
+ return ret;
389
+ }
390
+
391
+ /* void upb_mapiter_setvalue(upb_map *map, size_t iter, upb_msgval value); */
@@ -0,0 +1,168 @@
1
+
2
+ #ifndef UPB_REFLECTION_H_
3
+ #define UPB_REFLECTION_H_
4
+
5
+ #include "upb/def.h"
6
+ #include "upb/msg.h"
7
+ #include "upb/upb.h"
8
+
9
+ #include "upb/port_def.inc"
10
+
11
+ typedef union {
12
+ bool bool_val;
13
+ float float_val;
14
+ double double_val;
15
+ int32_t int32_val;
16
+ int64_t int64_val;
17
+ uint32_t uint32_val;
18
+ uint64_t uint64_val;
19
+ const upb_map* map_val;
20
+ const upb_msg* msg_val;
21
+ const upb_array* array_val;
22
+ upb_strview str_val;
23
+ } upb_msgval;
24
+
25
+ typedef union {
26
+ upb_map* map;
27
+ upb_msg* msg;
28
+ upb_array* array;
29
+ } upb_mutmsgval;
30
+
31
+ /** upb_msg *******************************************************************/
32
+
33
+ /* Creates a new message of the given type in the given arena. */
34
+ upb_msg *upb_msg_new(const upb_msgdef *m, upb_arena *a);
35
+
36
+ /* Returns the value associated with this field. */
37
+ upb_msgval upb_msg_get(const upb_msg *msg, const upb_fielddef *f);
38
+
39
+ /* Returns a mutable pointer to a map, array, or submessage value. If the given
40
+ * arena is non-NULL this will construct a new object if it was not previously
41
+ * present. May not be called for primitive fields. */
42
+ upb_mutmsgval upb_msg_mutable(upb_msg *msg, const upb_fielddef *f, upb_arena *a);
43
+
44
+ /* May only be called for fields where upb_fielddef_haspresence(f) == true. */
45
+ bool upb_msg_has(const upb_msg *msg, const upb_fielddef *f);
46
+
47
+ /* Returns the field that is set in the oneof, or NULL if none are set. */
48
+ const upb_fielddef *upb_msg_whichoneof(const upb_msg *msg,
49
+ const upb_oneofdef *o);
50
+
51
+ /* Sets the given field to the given value. For a msg/array/map/string, the
52
+ * value must be in the same arena. */
53
+ void upb_msg_set(upb_msg *msg, const upb_fielddef *f, upb_msgval val,
54
+ upb_arena *a);
55
+
56
+ /* Clears any field presence and sets the value back to its default. */
57
+ void upb_msg_clearfield(upb_msg *msg, const upb_fielddef *f);
58
+
59
+ /* Clear all data and unknown fields. */
60
+ void upb_msg_clear(upb_msg *msg, const upb_msgdef *m);
61
+
62
+ /* Iterate over present fields.
63
+ *
64
+ * size_t iter = UPB_MSG_BEGIN;
65
+ * const upb_fielddef *f;
66
+ * upb_msgval val;
67
+ * while (upb_msg_next(msg, m, ext_pool, &f, &val, &iter)) {
68
+ * process_field(f, val);
69
+ * }
70
+ *
71
+ * If ext_pool is NULL, no extensions will be returned. If the given symtab
72
+ * returns extensions that don't match what is in this message, those extensions
73
+ * will be skipped.
74
+ */
75
+
76
+ #define UPB_MSG_BEGIN -1
77
+ bool upb_msg_next(const upb_msg *msg, const upb_msgdef *m,
78
+ const upb_symtab *ext_pool, const upb_fielddef **f,
79
+ upb_msgval *val, size_t *iter);
80
+
81
+ /* Adds unknown data (serialized protobuf data) to the given message. The data
82
+ * is copied into the message instance. */
83
+ void upb_msg_addunknown(upb_msg *msg, const char *data, size_t len,
84
+ upb_arena *arena);
85
+
86
+ /* Clears all unknown field data from this message and all submessages. */
87
+ bool upb_msg_discardunknown(upb_msg *msg, const upb_msgdef *m, int maxdepth);
88
+
89
+ /* Returns a reference to the message's unknown data. */
90
+ const char *upb_msg_getunknown(const upb_msg *msg, size_t *len);
91
+
92
+ /** upb_array *****************************************************************/
93
+
94
+ /* Creates a new array on the given arena that holds elements of this type. */
95
+ upb_array *upb_array_new(upb_arena *a, upb_fieldtype_t type);
96
+
97
+ /* Returns the size of the array. */
98
+ size_t upb_array_size(const upb_array *arr);
99
+
100
+ /* Returns the given element, which must be within the array's current size. */
101
+ upb_msgval upb_array_get(const upb_array *arr, size_t i);
102
+
103
+ /* Sets the given element, which must be within the array's current size. */
104
+ void upb_array_set(upb_array *arr, size_t i, upb_msgval val);
105
+
106
+ /* Appends an element to the array. Returns false on allocation failure. */
107
+ bool upb_array_append(upb_array *array, upb_msgval val, upb_arena *arena);
108
+
109
+ /* Changes the size of a vector. New elements are initialized to empty/0.
110
+ * Returns false on allocation failure. */
111
+ bool upb_array_resize(upb_array *array, size_t size, upb_arena *arena);
112
+
113
+ /** upb_map *******************************************************************/
114
+
115
+ /* Creates a new map on the given arena with the given key/value size. */
116
+ upb_map *upb_map_new(upb_arena *a, upb_fieldtype_t key_type,
117
+ upb_fieldtype_t value_type);
118
+
119
+ /* Returns the number of entries in the map. */
120
+ size_t upb_map_size(const upb_map *map);
121
+
122
+ /* Stores a value for the given key into |*val| (or the zero value if the key is
123
+ * not present). Returns whether the key was present. The |val| pointer may be
124
+ * NULL, in which case the function tests whether the given key is present. */
125
+ bool upb_map_get(const upb_map *map, upb_msgval key, upb_msgval *val);
126
+
127
+ /* Removes all entries in the map. */
128
+ void upb_map_clear(upb_map *map);
129
+
130
+ /* Sets the given key to the given value. Returns true if this was a new key in
131
+ * the map, or false if an existing key was replaced. */
132
+ bool upb_map_set(upb_map *map, upb_msgval key, upb_msgval val,
133
+ upb_arena *arena);
134
+
135
+ /* Deletes this key from the table. Returns true if the key was present. */
136
+ bool upb_map_delete(upb_map *map, upb_msgval key);
137
+
138
+ /* Map iteration:
139
+ *
140
+ * size_t iter = UPB_MAP_BEGIN;
141
+ * while (upb_mapiter_next(map, &iter)) {
142
+ * upb_msgval key = upb_mapiter_key(map, iter);
143
+ * upb_msgval val = upb_mapiter_value(map, iter);
144
+ *
145
+ * // If mutating is desired.
146
+ * upb_mapiter_setvalue(map, iter, value2);
147
+ * }
148
+ */
149
+
150
+ /* Advances to the next entry. Returns false if no more entries are present. */
151
+ bool upb_mapiter_next(const upb_map *map, size_t *iter);
152
+
153
+ /* Returns true if the iterator still points to a valid entry, or false if the
154
+ * iterator is past the last element. It is an error to call this function with
155
+ * UPB_MAP_BEGIN (you must call next() at least once first). */
156
+ bool upb_mapiter_done(const upb_map *map, size_t iter);
157
+
158
+ /* Returns the key and value for this entry of the map. */
159
+ upb_msgval upb_mapiter_key(const upb_map *map, size_t iter);
160
+ upb_msgval upb_mapiter_value(const upb_map *map, size_t iter);
161
+
162
+ /* Sets the value for this entry. The iterator must not be done, and the
163
+ * iterator must not have been initialized const. */
164
+ void upb_mapiter_setvalue(upb_map *map, size_t iter, upb_msgval value);
165
+
166
+ #include "upb/port_undef.inc"
167
+
168
+ #endif /* UPB_REFLECTION_H_ */