grpc 1.0.1 → 1.1.2
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.
- checksums.yaml +4 -4
- data/Makefile +3696 -867
- data/etc/roots.pem +39 -111
- data/include/grpc/byte_buffer.h +64 -1
- data/include/grpc/census.h +40 -96
- data/include/grpc/compression.h +2 -1
- data/include/grpc/grpc.h +42 -7
- data/include/grpc/grpc_posix.h +8 -5
- data/include/grpc/impl/codegen/atm.h +3 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +8 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -4
- data/include/grpc/impl/codegen/compression_types.h +1 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +41 -0
- data/include/grpc/impl/codegen/gpr_slice.h +84 -0
- data/include/grpc/impl/codegen/{alloc.h → gpr_types.h} +30 -29
- data/include/grpc/impl/codegen/grpc_types.h +91 -9
- data/include/grpc/impl/codegen/port_platform.h +25 -92
- data/include/grpc/impl/codegen/slice.h +54 -97
- data/include/grpc/impl/codegen/sync.h +0 -253
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice.h +132 -0
- data/include/grpc/{impl/codegen/slice_buffer.h → slice_buffer.h} +22 -39
- data/include/grpc/support/alloc.h +40 -1
- data/include/grpc/support/log.h +80 -1
- data/include/grpc/support/log_windows.h +2 -0
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +252 -0
- data/include/grpc/support/time.h +67 -1
- data/src/boringssl/err_data.c +639 -627
- data/src/core/ext/census/base_resources.c +71 -0
- data/src/core/ext/census/base_resources.h +39 -0
- data/src/core/ext/census/gen/census.pb.c +26 -29
- data/src/core/ext/census/gen/census.pb.h +68 -67
- data/src/core/ext/census/gen/trace_context.pb.c +81 -0
- data/src/core/ext/census/gen/trace_context.pb.h +99 -0
- data/src/core/ext/census/grpc_filter.c +22 -16
- data/src/core/ext/census/grpc_plugin.c +2 -1
- data/src/core/ext/census/initialize.c +16 -4
- data/src/core/ext/census/mlog.h +1 -1
- data/src/core/ext/census/placeholders.c +0 -45
- data/src/core/ext/census/resource.c +312 -0
- data/src/core/ext/census/resource.h +63 -0
- data/src/core/ext/census/trace_context.c +86 -0
- data/src/core/ext/census/trace_context.h +68 -0
- data/src/core/ext/census/tracing.c +8 -2
- data/src/core/ext/{client_config → client_channel}/channel_connectivity.c +8 -4
- data/src/core/ext/client_channel/client_channel.c +1218 -0
- data/src/core/ext/{client_config → client_channel}/client_channel.h +8 -11
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.c +33 -3
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.h +15 -8
- data/src/core/ext/{client_config/client_config_plugin.c → client_channel/client_channel_plugin.c} +16 -15
- data/src/core/ext/{client_config → client_channel}/connector.c +1 -1
- data/src/core/ext/{client_config → client_channel}/connector.h +5 -8
- data/{include/grpc/support/slice_buffer.h → src/core/ext/client_channel/default_initial_connect_string.c} +4 -5
- data/src/core/ext/client_channel/http_connect_handshaker.c +399 -0
- data/src/core/ext/client_channel/http_connect_handshaker.h +52 -0
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.c +6 -7
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.h +10 -10
- data/src/core/ext/{client_config → client_channel}/lb_policy.c +11 -11
- data/src/core/ext/{client_config → client_channel}/lb_policy.h +68 -27
- data/src/core/ext/client_channel/lb_policy_factory.c +163 -0
- data/src/core/ext/{client_config → client_channel}/lb_policy_factory.h +64 -9
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.c +6 -4
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.h +4 -4
- data/src/core/ext/{client_config → client_channel}/parse_address.c +21 -14
- data/src/core/ext/{client_config → client_channel}/parse_address.h +8 -10
- data/src/core/ext/{client_config → client_channel}/resolver.c +3 -4
- data/src/core/ext/{client_config → client_channel}/resolver.h +11 -15
- data/src/core/ext/{client_config → client_channel}/resolver_factory.c +4 -3
- data/src/core/ext/{client_config → client_channel}/resolver_factory.h +13 -11
- data/src/core/ext/{client_config → client_channel}/resolver_registry.c +54 -34
- data/src/core/ext/{client_config → client_channel}/resolver_registry.h +21 -8
- data/src/core/ext/{client_config → client_channel}/subchannel.c +208 -119
- data/src/core/ext/{client_config → client_channel}/subchannel.h +21 -11
- data/src/core/ext/{client_config → client_channel}/subchannel_index.c +6 -17
- data/src/core/ext/{client_config → client_channel}/subchannel_index.h +7 -7
- data/src/core/ext/{client_config → client_channel}/uri_parser.c +21 -28
- data/src/core/ext/{client_config → client_channel}/uri_parser.h +3 -3
- data/src/core/ext/lb_policy/grpclb/grpclb.c +1406 -0
- data/src/core/ext/lb_policy/grpclb/grpclb.h +44 -0
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.c +117 -37
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.h +31 -12
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +6 -36
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +22 -42
- data/src/core/ext/lb_policy/pick_first/pick_first.c +64 -46
- data/src/core/ext/lb_policy/round_robin/round_robin.c +324 -160
- data/src/core/ext/load_reporting/load_reporting.c +7 -56
- data/src/core/ext/load_reporting/load_reporting.h +41 -28
- data/src/core/ext/load_reporting/load_reporting_filter.c +132 -42
- data/src/core/ext/load_reporting/load_reporting_filter.h +1 -0
- data/src/core/ext/resolver/dns/native/dns_resolver.c +88 -80
- data/src/core/ext/resolver/sockaddr/sockaddr_resolver.c +57 -102
- data/src/core/ext/transport/chttp2/alpn/alpn.c +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.c +253 -0
- data/src/core/{lib/iomgr/ev_poll_and_epoll_posix.h → ext/transport/chttp2/client/chttp2_connector.h} +5 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +31 -160
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +5 -5
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +44 -243
- data/src/core/ext/transport/chttp2/server/chttp2_server.c +342 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +47 -0
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +11 -124
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +20 -9
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +28 -236
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +31 -27
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +5 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.c +25 -22
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +0 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +1345 -1521
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame.h +3 -5
- data/src/core/ext/transport/chttp2/transport/frame_data.c +50 -47
- data/src/core/ext/transport/chttp2/transport/frame_data.h +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +19 -21
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +13 -12
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +31 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +22 -25
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +26 -18
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +68 -58
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +327 -214
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -9
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +24 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +9 -6
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +284 -436
- data/src/core/ext/transport/chttp2/transport/parsing.c +355 -590
- data/src/core/ext/transport/chttp2/transport/stream_lists.c +36 -309
- data/src/core/ext/transport/chttp2/transport/stream_map.c +13 -34
- data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -4
- data/src/core/ext/transport/chttp2/transport/writing.c +174 -286
- data/src/core/lib/channel/channel_args.c +70 -13
- data/src/core/lib/channel/channel_args.h +28 -2
- data/src/core/lib/channel/channel_stack.c +77 -28
- data/src/core/lib/channel/channel_stack.h +61 -23
- data/src/core/lib/channel/channel_stack_builder.c +33 -25
- data/src/core/lib/channel/channel_stack_builder.h +17 -8
- data/src/core/lib/channel/compress_filter.c +52 -36
- data/src/core/lib/channel/connected_channel.c +20 -12
- data/src/core/lib/channel/connected_channel.h +2 -1
- data/src/core/lib/channel/context.h +13 -1
- data/src/core/lib/channel/deadline_filter.c +344 -0
- data/src/core/lib/channel/deadline_filter.h +99 -0
- data/src/core/lib/channel/handshaker.c +240 -0
- data/src/core/lib/channel/handshaker.h +164 -0
- data/src/core/lib/{security/credentials/google_default/credentials_windows.c → channel/handshaker_factory.c} +16 -23
- data/src/core/lib/channel/handshaker_factory.h +66 -0
- data/src/core/lib/channel/handshaker_registry.c +113 -0
- data/src/core/{ext/client_config/client_config.h → lib/channel/handshaker_registry.h} +26 -16
- data/src/core/lib/channel/http_client_filter.c +248 -46
- data/src/core/lib/channel/http_client_filter.h +3 -0
- data/src/core/lib/channel/http_server_filter.c +136 -24
- data/src/core/lib/channel/message_size_filter.c +261 -0
- data/src/core/lib/channel/message_size_filter.h +39 -0
- data/src/core/lib/compression/message_compress.c +43 -37
- data/src/core/lib/compression/message_compress.h +7 -5
- data/src/core/lib/http/format_request.c +26 -11
- data/src/core/lib/http/format_request.h +7 -5
- data/src/core/lib/http/httpcli.c +45 -27
- data/src/core/lib/http/httpcli.h +4 -4
- data/src/core/lib/http/httpcli_security_connector.c +56 -46
- data/src/core/lib/http/parser.c +17 -14
- data/src/core/lib/http/parser.h +4 -2
- data/src/core/lib/iomgr/closure.c +49 -7
- data/src/core/lib/iomgr/closure.h +56 -14
- data/src/core/lib/iomgr/combiner.c +422 -0
- data/src/core/lib/iomgr/combiner.h +64 -0
- data/src/core/lib/iomgr/endpoint.c +8 -2
- data/src/core/lib/iomgr/endpoint.h +17 -7
- data/src/core/lib/iomgr/endpoint_pair.h +3 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.c +9 -8
- data/src/core/{ext/client_config/lb_policy_factory.c → lib/iomgr/endpoint_pair_uv.c} +18 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.c +7 -6
- data/src/core/lib/iomgr/error.c +72 -6
- data/src/core/lib/iomgr/error.h +30 -3
- data/src/core/lib/iomgr/ev_epoll_linux.c +500 -382
- data/src/core/lib/iomgr/ev_epoll_linux.h +3 -2
- data/src/core/lib/iomgr/ev_poll_posix.c +317 -30
- data/src/core/lib/iomgr/ev_poll_posix.h +1 -0
- data/src/core/lib/iomgr/ev_posix.c +26 -5
- data/src/core/lib/iomgr/ev_posix.h +12 -1
- data/src/core/lib/iomgr/exec_ctx.c +27 -94
- data/src/core/lib/iomgr/exec_ctx.h +19 -22
- data/src/core/lib/iomgr/executor.c +29 -8
- data/src/core/lib/iomgr/executor.h +2 -4
- data/src/core/lib/iomgr/iocp_windows.c +3 -4
- data/src/core/lib/iomgr/iomgr.c +14 -10
- data/src/core/lib/iomgr/iomgr.h +6 -2
- data/src/core/lib/iomgr/iomgr_posix.c +2 -2
- data/src/core/lib/iomgr/iomgr_uv.c +49 -0
- data/src/core/lib/iomgr/iomgr_windows.c +2 -2
- data/src/core/lib/iomgr/load_file.c +3 -3
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/network_status_tracker.c +1 -1
- data/src/core/lib/iomgr/pollset_set_uv.c +62 -0
- data/src/core/lib/iomgr/pollset_set_windows.c +3 -3
- data/src/core/lib/iomgr/pollset_uv.c +142 -0
- data/src/core/lib/iomgr/pollset_uv.h +42 -0
- data/src/core/lib/iomgr/pollset_windows.c +5 -6
- data/src/core/lib/iomgr/port.h +129 -0
- data/src/core/lib/iomgr/resolve_address.h +2 -1
- data/src/core/lib/iomgr/resolve_address_posix.c +14 -13
- data/src/core/lib/iomgr/resolve_address_uv.c +233 -0
- data/src/core/lib/iomgr/resolve_address_windows.c +14 -12
- data/src/core/lib/iomgr/resource_quota.c +832 -0
- data/src/core/lib/iomgr/resource_quota.h +159 -0
- data/src/core/lib/iomgr/sockaddr.h +10 -2
- data/src/core/lib/iomgr/sockaddr_utils.c +63 -36
- data/src/core/lib/iomgr/sockaddr_utils.h +14 -14
- data/src/core/lib/iomgr/socket_mutator.c +98 -0
- data/src/core/lib/iomgr/socket_mutator.h +80 -0
- data/src/core/lib/iomgr/socket_utils.h +42 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.c +28 -13
- data/src/core/lib/iomgr/socket_utils_linux.c +11 -5
- data/src/core/lib/iomgr/socket_utils_posix.c +10 -7
- data/src/core/lib/iomgr/socket_utils_posix.h +11 -4
- data/src/core/lib/iomgr/socket_utils_uv.c +49 -0
- data/src/core/lib/iomgr/socket_utils_windows.c +52 -0
- data/src/core/lib/iomgr/socket_windows.c +14 -6
- data/src/core/lib/iomgr/socket_windows.h +1 -0
- data/src/core/lib/iomgr/tcp_client.h +8 -2
- data/src/core/lib/iomgr/tcp_client_posix.c +131 -82
- data/src/core/lib/iomgr/tcp_client_posix.h +45 -0
- data/src/core/lib/iomgr/tcp_client_uv.c +190 -0
- data/src/core/lib/iomgr/tcp_client_windows.c +54 -30
- data/src/core/lib/iomgr/tcp_posix.c +135 -56
- data/src/core/lib/iomgr/tcp_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server.h +14 -6
- data/src/core/lib/iomgr/tcp_server_posix.c +154 -118
- data/src/core/lib/iomgr/tcp_server_uv.c +388 -0
- data/src/core/lib/iomgr/tcp_server_windows.c +127 -100
- data/src/core/lib/iomgr/tcp_uv.c +367 -0
- data/src/core/lib/iomgr/tcp_uv.h +59 -0
- data/src/core/lib/iomgr/tcp_windows.c +65 -48
- data/src/core/lib/iomgr/tcp_windows.h +3 -1
- data/src/core/lib/iomgr/timer.h +21 -21
- data/src/core/lib/iomgr/{timer.c → timer_generic.c} +15 -10
- data/src/core/lib/iomgr/timer_generic.h +49 -0
- data/src/core/lib/iomgr/timer_heap.c +6 -0
- data/src/core/lib/iomgr/timer_uv.c +99 -0
- data/src/core/lib/iomgr/timer_uv.h +47 -0
- data/src/core/lib/iomgr/udp_server.c +116 -98
- data/src/core/lib/iomgr/udp_server.h +5 -3
- data/src/core/lib/iomgr/unix_sockets_posix.c +14 -6
- data/src/core/lib/iomgr/unix_sockets_posix.h +6 -5
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.c +118 -0
- data/src/core/lib/iomgr/wakeup_fd_cv.h +80 -0
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +12 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.c +34 -5
- data/src/core/lib/iomgr/wakeup_fd_posix.h +5 -0
- data/src/core/lib/iomgr/workqueue.h +12 -20
- data/src/core/{ext/client_config/client_config.c → lib/iomgr/workqueue_uv.c} +24 -33
- data/{include/grpc/support/slice.h → src/core/lib/iomgr/workqueue_uv.h} +4 -6
- data/src/core/lib/iomgr/workqueue_windows.c +9 -8
- data/src/core/lib/json/json.c +3 -3
- data/src/core/lib/json/json.h +11 -11
- data/src/core/lib/json/json_reader.c +9 -5
- data/src/core/lib/profiling/basic_timers.c +10 -1
- data/src/core/lib/profiling/timers.h +2 -0
- data/src/core/lib/security/context/security_context.c +13 -3
- data/src/core/lib/security/context/security_context.h +20 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.c +28 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.c +48 -19
- data/src/core/lib/security/credentials/credentials.h +36 -19
- data/src/core/lib/security/credentials/credentials_metadata.c +11 -8
- data/src/core/lib/security/credentials/fake/fake_credentials.c +15 -11
- data/src/core/lib/security/credentials/google_default/{credentials_posix.c → credentials_generic.c} +7 -14
- data/src/core/lib/security/credentials/google_default/google_default_credentials.c +33 -21
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +14 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.c +3 -2
- data/src/core/lib/security/credentials/jwt/json_token.c +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +54 -19
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.c +129 -79
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +9 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +63 -28
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +32 -11
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -9
- data/src/core/lib/security/transport/client_auth_filter.c +33 -27
- data/src/core/lib/security/transport/secure_endpoint.c +93 -68
- data/src/core/lib/security/transport/secure_endpoint.h +2 -2
- data/src/core/lib/security/transport/security_connector.c +133 -168
- data/src/core/lib/security/transport/security_connector.h +31 -46
- data/src/core/lib/security/transport/security_handshaker.c +501 -0
- data/src/core/lib/security/transport/{handshake.h → security_handshaker.h} +10 -10
- data/src/core/lib/security/transport/server_auth_filter.c +50 -38
- data/src/core/lib/security/util/b64.c +11 -8
- data/src/core/lib/security/util/b64.h +5 -4
- data/src/core/lib/slice/percent_encoding.c +182 -0
- data/src/core/lib/slice/percent_encoding.h +78 -0
- data/src/core/lib/{support → slice}/slice.c +81 -50
- data/src/core/lib/{support → slice}/slice_buffer.c +78 -60
- data/src/core/lib/slice/slice_internal.h +49 -0
- data/src/core/lib/slice/slice_string_helpers.c +90 -0
- data/src/core/lib/{iomgr/workqueue_posix.h → slice/slice_string_helpers.h} +18 -18
- data/src/core/lib/support/backoff.c +24 -13
- data/src/core/lib/support/backoff.h +5 -2
- data/src/core/lib/support/env.h +0 -2
- data/src/core/lib/support/log.c +5 -4
- data/src/core/lib/support/log_linux.c +0 -1
- data/src/core/lib/support/log_posix.c +1 -1
- data/src/core/lib/support/mpscq.c +83 -0
- data/src/core/lib/support/mpscq.h +65 -0
- data/src/core/lib/support/string.c +58 -49
- data/src/core/lib/support/string.h +11 -8
- data/src/core/lib/support/subprocess_posix.c +5 -2
- data/src/core/lib/support/thd.c +1 -1
- data/src/core/lib/support/time.c +43 -79
- data/src/core/lib/support/time_posix.c +1 -1
- data/src/core/lib/support/tmpfile.h +0 -2
- data/src/core/lib/surface/alarm.c +4 -1
- data/src/core/lib/surface/byte_buffer.c +17 -11
- data/src/core/lib/surface/byte_buffer_reader.c +23 -15
- data/src/core/lib/surface/call.c +294 -276
- data/src/core/lib/surface/call.h +24 -9
- data/src/core/lib/surface/call_log_batch.c +5 -3
- data/src/core/lib/surface/channel.c +127 -111
- data/src/core/lib/surface/channel.h +14 -5
- data/src/core/lib/surface/channel_init.c +1 -1
- data/src/core/lib/surface/channel_init.h +10 -1
- data/src/core/lib/surface/channel_ping.c +7 -6
- data/src/core/lib/surface/completion_queue.c +154 -18
- data/src/core/lib/surface/completion_queue.h +5 -0
- data/src/core/lib/surface/init.c +40 -6
- data/src/core/lib/surface/init.h +1 -0
- data/src/core/lib/surface/init_secure.c +5 -2
- data/src/core/lib/surface/lame_client.c +28 -18
- data/src/core/lib/surface/server.c +134 -87
- data/src/core/lib/surface/server.h +8 -0
- data/src/core/lib/surface/validate_metadata.c +1 -1
- data/src/core/lib/surface/version.c +3 -1
- data/src/core/lib/transport/byte_stream.c +7 -4
- data/src/core/lib/transport/byte_stream.h +6 -10
- data/src/core/lib/transport/connectivity_state.c +21 -12
- data/src/core/lib/transport/connectivity_state.h +4 -1
- data/src/core/lib/transport/mdstr_hash_table.c +118 -0
- data/src/core/lib/transport/mdstr_hash_table.h +77 -0
- data/src/core/lib/transport/metadata.c +83 -60
- data/src/core/lib/transport/metadata.h +41 -23
- data/src/core/lib/transport/metadata_batch.c +17 -11
- data/src/core/lib/transport/metadata_batch.h +20 -6
- data/src/core/lib/transport/pid_controller.c +57 -0
- data/src/core/lib/transport/pid_controller.h +64 -0
- data/src/core/lib/transport/service_config.c +251 -0
- data/src/core/lib/transport/service_config.h +71 -0
- data/src/core/lib/transport/static_metadata.c +18 -16
- data/src/core/lib/transport/static_metadata.h +113 -107
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.c +3 -3
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.h +7 -7
- data/src/core/lib/transport/transport.c +84 -23
- data/src/core/lib/transport/transport.h +53 -8
- data/src/core/lib/transport/transport_impl.h +3 -0
- data/src/core/lib/transport/transport_op_string.c +92 -20
- data/src/core/lib/tsi/ssl_transport_security.c +3 -1
- data/src/core/plugin_registry/grpc_plugin_registry.c +8 -4
- data/src/ruby/ext/grpc/extconf.rb +0 -1
- data/src/ruby/ext/grpc/rb_byte_buffer.c +8 -7
- data/src/ruby/ext/grpc/rb_call.c +15 -5
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +466 -0
- data/src/{core/ext/client_config/default_initial_connect_string.c → ruby/ext/grpc/rb_compression_options.h} +10 -5
- data/src/ruby/ext/grpc/rb_grpc.c +3 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +198 -190
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +306 -294
- data/src/ruby/ext/grpc/rb_server.c +18 -12
- data/src/ruby/lib/grpc/errors.rb +154 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +144 -63
- data/src/ruby/lib/grpc/generic/bidi_call.rb +18 -2
- data/src/ruby/lib/grpc/generic/client_stub.rb +7 -5
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +39 -13
- data/src/ruby/lib/grpc/generic/rpc_server.rb +51 -24
- data/src/ruby/lib/grpc/generic/service.rb +3 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/checker.rb +3 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +7 -0
- data/src/ruby/pb/test/client.rb +307 -7
- data/src/ruby/pb/test/server.rb +26 -1
- data/src/ruby/spec/compression_options_spec.rb +164 -0
- data/src/ruby/spec/error_sanity_spec.rb +64 -0
- data/src/ruby/spec/generic/active_call_spec.rb +290 -12
- data/src/ruby/spec/generic/client_stub_spec.rb +91 -41
- data/src/ruby/spec/generic/rpc_desc_spec.rb +36 -16
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +22 -28
- data/src/ruby/spec/generic/rpc_server_spec.rb +6 -6
- data/src/ruby/spec/pb/health/checker_spec.rb +27 -19
- data/src/ruby/spec/spec_helper.rb +2 -0
- data/third_party/boringssl/crypto/aes/aes.c +12 -12
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +6 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +28 -13
- data/third_party/boringssl/crypto/asn1/a_gentm.c +2 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +7 -3
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -11
- data/third_party/boringssl/crypto/asn1/a_type.c +0 -2
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -30
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +56 -76
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +0 -10
- data/third_party/boringssl/crypto/asn1/asn1_par.c +0 -322
- data/third_party/boringssl/crypto/asn1/f_enum.c +1 -108
- data/third_party/boringssl/crypto/asn1/f_int.c +1 -106
- data/third_party/boringssl/crypto/asn1/f_string.c +1 -106
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +10 -14
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +17 -11
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +29 -42
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +1 -1
- data/third_party/boringssl/crypto/base64/base64.c +249 -285
- data/third_party/boringssl/crypto/bio/bio.c +13 -23
- data/third_party/boringssl/crypto/bio/bio_mem.c +3 -2
- data/third_party/boringssl/crypto/bio/connect.c +12 -3
- data/third_party/boringssl/crypto/bio/fd.c +22 -15
- data/third_party/boringssl/crypto/bio/file.c +2 -38
- data/third_party/boringssl/crypto/bio/hexdump.c +1 -2
- data/third_party/boringssl/crypto/bio/internal.h +3 -0
- data/third_party/boringssl/crypto/bio/pair.c +1 -1
- data/third_party/boringssl/crypto/bio/socket.c +10 -2
- data/third_party/boringssl/crypto/bio/socket_helper.c +2 -2
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -8
- data/third_party/boringssl/crypto/bn/bn.c +38 -0
- data/third_party/boringssl/crypto/bn/cmp.c +25 -0
- data/third_party/boringssl/crypto/bn/convert.c +73 -76
- data/third_party/boringssl/crypto/bn/div.c +136 -70
- data/third_party/boringssl/crypto/bn/exponentiation.c +86 -381
- data/third_party/boringssl/crypto/bn/gcd.c +213 -296
- data/third_party/boringssl/crypto/bn/generic.c +0 -80
- data/third_party/boringssl/crypto/bn/internal.h +15 -3
- data/third_party/boringssl/crypto/bn/montgomery.c +57 -207
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +160 -0
- data/third_party/boringssl/crypto/bn/mul.c +2 -1
- data/third_party/boringssl/crypto/bn/prime.c +24 -8
- data/third_party/boringssl/crypto/bn/random.c +47 -33
- data/third_party/boringssl/crypto/bn/sqrt.c +4 -5
- data/third_party/boringssl/crypto/buf/buf.c +25 -21
- data/third_party/boringssl/crypto/bytestring/ber.c +1 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +50 -22
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -4
- data/third_party/boringssl/crypto/chacha/{chacha_generic.c → chacha.c} +56 -29
- data/third_party/boringssl/crypto/cipher/aead.c +11 -22
- data/third_party/boringssl/crypto/cipher/cipher.c +2 -2
- data/third_party/boringssl/crypto/cipher/e_aes.c +53 -103
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +2 -8
- data/third_party/boringssl/crypto/cipher/e_des.c +3 -5
- data/third_party/boringssl/crypto/cipher/e_null.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc2.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc4.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +3 -63
- data/third_party/boringssl/crypto/cipher/e_tls.c +12 -83
- data/third_party/boringssl/crypto/cipher/internal.h +8 -10
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +69 -40
- data/third_party/boringssl/crypto/conf/conf.c +2 -1
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +61 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +360 -0
- data/third_party/boringssl/crypto/cpu-arm.c +0 -161
- data/third_party/boringssl/crypto/cpu-intel.c +5 -3
- data/third_party/boringssl/{ssl/test/scoped_types.h → crypto/cpu-ppc64le.c} +21 -9
- data/third_party/boringssl/crypto/crypto.c +29 -7
- data/third_party/boringssl/crypto/curve25519/curve25519.c +284 -242
- data/third_party/boringssl/crypto/curve25519/internal.h +64 -0
- data/third_party/boringssl/crypto/curve25519/spake25519.c +464 -0
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +21 -0
- data/third_party/boringssl/crypto/dh/check.c +22 -6
- data/third_party/boringssl/crypto/dh/dh.c +45 -21
- data/third_party/boringssl/crypto/dh/dh_asn1.c +96 -20
- data/third_party/boringssl/crypto/dh/params.c +30 -78
- data/third_party/boringssl/crypto/digest/digest.c +3 -3
- data/third_party/boringssl/crypto/dsa/dsa.c +59 -29
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +4 -0
- data/third_party/boringssl/crypto/ec/ec.c +84 -140
- data/third_party/boringssl/crypto/ec/ec_asn1.c +82 -52
- data/third_party/boringssl/crypto/ec/ec_key.c +15 -15
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +87 -50
- data/third_party/boringssl/crypto/ec/internal.h +12 -36
- data/third_party/boringssl/crypto/ec/oct.c +11 -11
- data/third_party/boringssl/crypto/ec/p224-64.c +59 -116
- data/third_party/boringssl/crypto/ec/p256-64.c +88 -163
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +46 -58
- data/third_party/boringssl/crypto/ec/simple.c +81 -201
- data/third_party/boringssl/crypto/ec/util-64.c +0 -74
- data/third_party/boringssl/crypto/ecdh/ecdh.c +7 -1
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +28 -46
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +1 -0
- data/third_party/boringssl/crypto/engine/engine.c +1 -1
- data/third_party/boringssl/crypto/err/err.c +3 -3
- data/third_party/boringssl/crypto/evp/evp.c +14 -59
- data/third_party/boringssl/crypto/evp/evp_asn1.c +144 -87
- data/third_party/boringssl/crypto/evp/evp_ctx.c +7 -7
- data/third_party/boringssl/crypto/evp/internal.h +4 -46
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +8 -157
- data/third_party/boringssl/crypto/evp/p_ec.c +1 -1
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +22 -170
- data/third_party/boringssl/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +10 -548
- data/third_party/boringssl/crypto/evp/print.c +520 -0
- data/third_party/boringssl/crypto/ex_data.c +4 -6
- data/third_party/boringssl/crypto/hkdf/hkdf.c +38 -17
- data/third_party/boringssl/crypto/hmac/hmac.c +6 -6
- data/third_party/boringssl/crypto/internal.h +57 -77
- data/third_party/boringssl/crypto/lhash/lhash.c +6 -10
- data/third_party/boringssl/crypto/md4/md4.c +9 -0
- data/third_party/boringssl/crypto/mem.c +19 -19
- data/third_party/boringssl/crypto/modes/cfb.c +5 -6
- data/third_party/boringssl/crypto/modes/ctr.c +10 -18
- data/third_party/boringssl/crypto/modes/gcm.c +100 -66
- data/third_party/boringssl/crypto/modes/internal.h +15 -27
- data/third_party/boringssl/crypto/modes/ofb.c +9 -22
- data/third_party/boringssl/crypto/newhope/error_correction.c +131 -0
- data/third_party/boringssl/crypto/newhope/internal.h +71 -0
- data/third_party/boringssl/crypto/newhope/newhope.c +174 -0
- data/third_party/boringssl/crypto/newhope/ntt.c +148 -0
- data/third_party/boringssl/crypto/newhope/poly.c +183 -0
- data/third_party/boringssl/crypto/newhope/precomp.c +306 -0
- data/third_party/boringssl/crypto/newhope/reduce.c +42 -0
- data/third_party/boringssl/crypto/obj/obj.c +111 -135
- data/third_party/boringssl/crypto/obj/obj_dat.h +4 -10
- data/third_party/boringssl/crypto/pem/pem_lib.c +6 -43
- data/third_party/boringssl/crypto/pem/pem_pkey.c +10 -19
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +1 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +2 -1
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +2 -2
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +95 -87
- data/third_party/boringssl/crypto/{test/test_util.h → poly1305/internal.h} +15 -10
- data/third_party/boringssl/crypto/poly1305/poly1305.c +8 -15
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +1 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +3 -3
- data/third_party/boringssl/crypto/rand/deterministic.c +47 -0
- data/third_party/boringssl/crypto/rand/rand.c +4 -1
- data/third_party/boringssl/crypto/rand/urandom.c +5 -7
- data/third_party/boringssl/crypto/rand/windows.c +5 -8
- data/third_party/boringssl/crypto/rc4/rc4.c +24 -209
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa/blinding.c +74 -232
- data/third_party/boringssl/crypto/rsa/internal.h +5 -13
- data/third_party/boringssl/crypto/rsa/padding.c +64 -63
- data/third_party/boringssl/crypto/rsa/rsa.c +50 -28
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +8 -16
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +134 -122
- data/third_party/boringssl/crypto/sha/sha256.c +2 -2
- data/third_party/boringssl/crypto/sha/sha512.c +7 -7
- data/third_party/boringssl/crypto/stack/stack.c +13 -22
- data/third_party/boringssl/crypto/thread.c +21 -12
- data/third_party/boringssl/crypto/thread_none.c +6 -2
- data/third_party/boringssl/crypto/thread_pthread.c +16 -7
- data/third_party/boringssl/crypto/thread_win.c +38 -85
- data/third_party/boringssl/crypto/x509/a_sign.c +3 -3
- data/third_party/boringssl/crypto/x509/a_strex.c +1 -1
- data/third_party/boringssl/crypto/x509/a_verify.c +2 -2
- data/third_party/boringssl/crypto/{evp → x509}/algorithm.c +37 -53
- data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -2
- data/third_party/boringssl/crypto/x509/by_dir.c +6 -6
- data/third_party/boringssl/crypto/x509/internal.h +66 -0
- data/third_party/boringssl/crypto/x509/rsa_pss.c +385 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +10 -12
- data/third_party/boringssl/crypto/x509/x509.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +9 -3
- data/third_party/boringssl/crypto/x509/x509_lu.c +34 -44
- data/third_party/boringssl/crypto/x509/x509_obj.c +19 -2
- data/third_party/boringssl/crypto/x509/x509_r2x.c +9 -5
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +63 -32
- data/third_party/boringssl/crypto/x509/x509_vpm.c +29 -18
- data/third_party/boringssl/crypto/x509/x509cset.c +2 -1
- data/third_party/boringssl/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl/crypto/x509/x_name.c +14 -17
- data/third_party/boringssl/crypto/x509/x_pubkey.c +10 -7
- data/third_party/boringssl/crypto/x509/x_x509.c +67 -6
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +4 -3
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +5 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +0 -3
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +2 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +2 -1
- data/third_party/boringssl/include/openssl/aead.h +72 -73
- data/third_party/boringssl/include/openssl/arm_arch.h +0 -6
- data/third_party/boringssl/include/openssl/asn1.h +103 -235
- data/third_party/boringssl/include/openssl/asn1_mac.h +17 -74
- data/third_party/boringssl/include/openssl/asn1t.h +1 -11
- data/third_party/boringssl/include/openssl/base.h +145 -3
- data/third_party/boringssl/include/openssl/base64.h +20 -17
- data/third_party/boringssl/include/openssl/bio.h +59 -34
- data/third_party/boringssl/include/openssl/bn.h +118 -51
- data/third_party/boringssl/include/openssl/buf.h +15 -0
- data/third_party/boringssl/include/openssl/bytestring.h +52 -4
- data/third_party/boringssl/include/openssl/chacha.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +18 -1
- data/third_party/boringssl/include/openssl/cmac.h +11 -0
- data/third_party/boringssl/include/openssl/conf.h +13 -2
- data/third_party/boringssl/include/openssl/cpu.h +20 -23
- data/third_party/boringssl/include/openssl/crypto.h +22 -1
- data/third_party/boringssl/include/openssl/curve25519.h +96 -4
- data/third_party/boringssl/include/openssl/dh.h +71 -16
- data/third_party/boringssl/include/openssl/digest.h +38 -11
- data/third_party/boringssl/include/openssl/dsa.h +40 -4
- data/third_party/boringssl/include/openssl/ec.h +44 -18
- data/third_party/boringssl/include/openssl/ec_key.h +27 -6
- data/third_party/boringssl/include/openssl/ecdsa.h +11 -0
- data/third_party/boringssl/include/openssl/engine.h +11 -0
- data/third_party/boringssl/include/openssl/evp.h +52 -88
- data/third_party/boringssl/include/openssl/hkdf.h +24 -4
- data/third_party/boringssl/include/openssl/hmac.h +20 -6
- data/third_party/boringssl/include/openssl/md4.h +4 -0
- data/third_party/boringssl/include/openssl/mem.h +19 -0
- data/third_party/boringssl/include/openssl/newhope.h +158 -0
- data/third_party/boringssl/include/openssl/nid.h +4166 -0
- data/third_party/boringssl/include/openssl/obj.h +31 -3
- data/third_party/boringssl/include/openssl/obj_mac.h +17 -4143
- data/third_party/boringssl/include/openssl/{opensslfeatures.h → opensslconf.h} +3 -3
- data/third_party/boringssl/include/openssl/pem.h +5 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +12 -0
- data/third_party/boringssl/include/openssl/rand.h +6 -0
- data/third_party/boringssl/include/openssl/rc4.h +6 -0
- data/third_party/boringssl/{crypto/dh/internal.h → include/openssl/ripemd.h} +38 -11
- data/third_party/boringssl/include/openssl/rsa.h +127 -65
- data/third_party/boringssl/include/openssl/sha.h +14 -10
- data/third_party/boringssl/include/openssl/ssl.h +561 -275
- data/third_party/boringssl/include/openssl/ssl3.h +18 -25
- data/third_party/boringssl/include/openssl/stack.h +2 -4
- data/third_party/boringssl/include/openssl/stack_macros.h +321 -353
- data/third_party/boringssl/include/openssl/thread.h +31 -13
- data/third_party/boringssl/include/openssl/time_support.h +1 -0
- data/third_party/boringssl/include/openssl/tls1.h +37 -33
- data/third_party/boringssl/include/openssl/x509.h +69 -26
- data/third_party/boringssl/include/openssl/x509_vfy.h +12 -10
- data/third_party/boringssl/include/openssl/x509v3.h +23 -2
- data/third_party/boringssl/ssl/custom_extensions.c +3 -5
- data/third_party/boringssl/ssl/d1_both.c +463 -499
- data/third_party/boringssl/ssl/d1_lib.c +38 -109
- data/third_party/boringssl/ssl/d1_pkt.c +173 -334
- data/third_party/boringssl/ssl/d1_srtp.c +20 -18
- data/third_party/boringssl/ssl/{d1_meth.c → dtls_method.c} +88 -15
- data/third_party/boringssl/ssl/dtls_record.c +27 -26
- data/third_party/boringssl/ssl/{s3_clnt.c → handshake_client.c} +816 -904
- data/third_party/boringssl/ssl/handshake_server.c +1932 -0
- data/third_party/boringssl/ssl/internal.h +712 -439
- data/third_party/boringssl/ssl/s3_both.c +445 -257
- data/third_party/boringssl/ssl/s3_enc.c +53 -36
- data/third_party/boringssl/ssl/s3_lib.c +23 -268
- data/third_party/boringssl/ssl/s3_pkt.c +168 -364
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +46 -17
- data/third_party/boringssl/ssl/ssl_asn1.c +56 -26
- data/third_party/boringssl/ssl/ssl_buffer.c +16 -24
- data/third_party/boringssl/ssl/ssl_cert.c +324 -49
- data/third_party/boringssl/ssl/ssl_cipher.c +205 -150
- data/third_party/boringssl/ssl/ssl_ecdh.c +287 -51
- data/third_party/boringssl/ssl/ssl_file.c +21 -68
- data/third_party/boringssl/ssl/ssl_lib.c +881 -510
- data/third_party/boringssl/ssl/ssl_rsa.c +404 -34
- data/third_party/boringssl/ssl/ssl_session.c +324 -103
- data/third_party/boringssl/ssl/ssl_stat.c +6 -88
- data/third_party/boringssl/ssl/t1_enc.c +23 -39
- data/third_party/boringssl/ssl/t1_lib.c +1120 -622
- data/third_party/boringssl/ssl/tls13_both.c +440 -0
- data/third_party/boringssl/ssl/tls13_client.c +682 -0
- data/third_party/boringssl/ssl/tls13_enc.c +391 -0
- data/third_party/boringssl/ssl/tls13_server.c +672 -0
- data/third_party/boringssl/ssl/{s3_meth.c → tls_method.c} +100 -21
- data/third_party/boringssl/ssl/tls_record.c +159 -77
- data/third_party/nanopb/pb.h +60 -28
- data/third_party/nanopb/pb_decode.c +120 -92
- data/third_party/nanopb/pb_decode.h +3 -3
- data/third_party/nanopb/pb_encode.c +73 -67
- data/third_party/nanopb/pb_encode.h +4 -4
- metadata +155 -89
- data/include/grpc/impl/codegen/byte_buffer.h +0 -122
- data/include/grpc/impl/codegen/log.h +0 -118
- data/include/grpc/impl/codegen/time.h +0 -130
- data/src/core/ext/client_config/client_channel.c +0 -593
- data/src/core/ext/client_config/subchannel_call_holder.c +0 -272
- data/src/core/ext/client_config/subchannel_call_holder.h +0 -99
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +0 -2046
- data/src/core/lib/iomgr/workqueue_posix.c +0 -151
- data/src/core/lib/security/transport/handshake.c +0 -368
- data/third_party/boringssl/crypto/asn1/a_bytes.c +0 -308
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +0 -477
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +0 -251
- data/third_party/boringssl/crypto/asn1/t_pkey.c +0 -110
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +0 -596
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +0 -328
- data/third_party/boringssl/crypto/directory.h +0 -66
- data/third_party/boringssl/crypto/directory_posix.c +0 -108
- data/third_party/boringssl/crypto/directory_win.c +0 -144
- data/third_party/boringssl/crypto/test/scoped_types.h +0 -140
- data/third_party/boringssl/include/openssl/pqueue.h +0 -146
- data/third_party/boringssl/ssl/d1_clnt.c +0 -561
- data/third_party/boringssl/ssl/d1_srvr.c +0 -476
- data/third_party/boringssl/ssl/pqueue/pqueue.c +0 -197
- data/third_party/boringssl/ssl/s3_srvr.c +0 -2272
- data/third_party/boringssl/ssl/test/async_bio.h +0 -45
- data/third_party/boringssl/ssl/test/packeted_bio.h +0 -44
- data/third_party/boringssl/ssl/test/test_config.h +0 -110
@@ -31,27 +31,82 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#ifndef
|
35
|
-
#define
|
34
|
+
#ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_FACTORY_H
|
35
|
+
#define GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_FACTORY_H
|
36
36
|
|
37
|
-
#include "src/core/ext/
|
38
|
-
#include "src/core/ext/
|
39
|
-
#include "src/core/lib/iomgr/resolve_address.h"
|
37
|
+
#include "src/core/ext/client_channel/client_channel_factory.h"
|
38
|
+
#include "src/core/ext/client_channel/lb_policy.h"
|
40
39
|
|
41
40
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
41
|
+
#include "src/core/lib/iomgr/resolve_address.h"
|
42
|
+
|
43
|
+
// Channel arg key for grpc_lb_addresses.
|
44
|
+
#define GRPC_ARG_LB_ADDRESSES "grpc.lb_addresses"
|
42
45
|
|
43
46
|
typedef struct grpc_lb_policy_factory grpc_lb_policy_factory;
|
44
47
|
typedef struct grpc_lb_policy_factory_vtable grpc_lb_policy_factory_vtable;
|
45
48
|
|
46
|
-
/** grpc_lb_policy provides grpc_client_config objects to grpc_channel
|
47
|
-
objects */
|
48
49
|
struct grpc_lb_policy_factory {
|
49
50
|
const grpc_lb_policy_factory_vtable *vtable;
|
50
51
|
};
|
51
52
|
|
53
|
+
/** A resolved address alongside any LB related information associated with it.
|
54
|
+
* \a user_data, if not NULL, contains opaque data meant to be consumed by the
|
55
|
+
* gRPC LB policy. Note that no all LB policies support \a user_data as input.
|
56
|
+
* Those who don't will simply ignore it and will correspondingly return NULL in
|
57
|
+
* their namesake pick() output argument. */
|
58
|
+
typedef struct grpc_lb_address {
|
59
|
+
grpc_resolved_address address;
|
60
|
+
bool is_balancer;
|
61
|
+
char *balancer_name; /* For secure naming. */
|
62
|
+
void *user_data;
|
63
|
+
} grpc_lb_address;
|
64
|
+
|
65
|
+
typedef struct grpc_lb_user_data_vtable {
|
66
|
+
void *(*copy)(void *);
|
67
|
+
void (*destroy)(grpc_exec_ctx *exec_ctx, void *);
|
68
|
+
int (*cmp)(void *, void *);
|
69
|
+
} grpc_lb_user_data_vtable;
|
70
|
+
|
71
|
+
typedef struct grpc_lb_addresses {
|
72
|
+
size_t num_addresses;
|
73
|
+
grpc_lb_address *addresses;
|
74
|
+
const grpc_lb_user_data_vtable *user_data_vtable;
|
75
|
+
} grpc_lb_addresses;
|
76
|
+
|
77
|
+
/** Returns a grpc_addresses struct with enough space for
|
78
|
+
\a num_addresses addresses. The \a user_data_vtable argument may be
|
79
|
+
NULL if no user data will be added. */
|
80
|
+
grpc_lb_addresses *grpc_lb_addresses_create(
|
81
|
+
size_t num_addresses, const grpc_lb_user_data_vtable *user_data_vtable);
|
82
|
+
|
83
|
+
/** Creates a copy of \a addresses. */
|
84
|
+
grpc_lb_addresses *grpc_lb_addresses_copy(const grpc_lb_addresses *addresses);
|
85
|
+
|
86
|
+
/** Sets the value of the address at index \a index of \a addresses.
|
87
|
+
* \a address is a socket address of length \a address_len.
|
88
|
+
* Takes ownership of \a balancer_name. */
|
89
|
+
void grpc_lb_addresses_set_address(grpc_lb_addresses *addresses, size_t index,
|
90
|
+
void *address, size_t address_len,
|
91
|
+
bool is_balancer, char *balancer_name,
|
92
|
+
void *user_data);
|
93
|
+
|
94
|
+
/** Compares \a addresses1 and \a addresses2. */
|
95
|
+
int grpc_lb_addresses_cmp(const grpc_lb_addresses *addresses1,
|
96
|
+
const grpc_lb_addresses *addresses2);
|
97
|
+
|
98
|
+
/** Destroys \a addresses. */
|
99
|
+
void grpc_lb_addresses_destroy(grpc_exec_ctx *exec_ctx,
|
100
|
+
grpc_lb_addresses *addresses);
|
101
|
+
|
102
|
+
/** Returns a channel arg containing \a addresses. */
|
103
|
+
grpc_arg grpc_lb_addresses_create_channel_arg(
|
104
|
+
const grpc_lb_addresses *addresses);
|
105
|
+
|
106
|
+
/** Arguments passed to LB policies. */
|
52
107
|
typedef struct grpc_lb_policy_args {
|
53
|
-
grpc_resolved_addresses *addresses;
|
54
108
|
grpc_client_channel_factory *client_channel_factory;
|
109
|
+
grpc_channel_args *args;
|
55
110
|
} grpc_lb_policy_args;
|
56
111
|
|
57
112
|
struct grpc_lb_policy_factory_vtable {
|
@@ -75,4 +130,4 @@ grpc_lb_policy *grpc_lb_policy_factory_create_lb_policy(
|
|
75
130
|
grpc_exec_ctx *exec_ctx, grpc_lb_policy_factory *factory,
|
76
131
|
grpc_lb_policy_args *args);
|
77
132
|
|
78
|
-
#endif /*
|
133
|
+
#endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_FACTORY_H */
|
@@ -31,10 +31,12 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#include "src/core/ext/
|
34
|
+
#include "src/core/ext/client_channel/lb_policy_registry.h"
|
35
35
|
|
36
36
|
#include <string.h>
|
37
37
|
|
38
|
+
#include "src/core/lib/support/string.h"
|
39
|
+
|
38
40
|
#define MAX_POLICIES 10
|
39
41
|
|
40
42
|
static grpc_lb_policy_factory *g_all_of_the_lb_policies[MAX_POLICIES];
|
@@ -52,8 +54,8 @@ void grpc_lb_policy_registry_shutdown(void) {
|
|
52
54
|
void grpc_register_lb_policy(grpc_lb_policy_factory *factory) {
|
53
55
|
int i;
|
54
56
|
for (i = 0; i < g_number_of_lb_policies; i++) {
|
55
|
-
GPR_ASSERT(0 !=
|
56
|
-
|
57
|
+
GPR_ASSERT(0 != gpr_stricmp(factory->vtable->name,
|
58
|
+
g_all_of_the_lb_policies[i]->vtable->name));
|
57
59
|
}
|
58
60
|
GPR_ASSERT(g_number_of_lb_policies != MAX_POLICIES);
|
59
61
|
grpc_lb_policy_factory_ref(factory);
|
@@ -66,7 +68,7 @@ static grpc_lb_policy_factory *lookup_factory(const char *name) {
|
|
66
68
|
if (name == NULL) return NULL;
|
67
69
|
|
68
70
|
for (i = 0; i < g_number_of_lb_policies; i++) {
|
69
|
-
if (0 ==
|
71
|
+
if (0 == gpr_stricmp(name, g_all_of_the_lb_policies[i]->vtable->name)) {
|
70
72
|
return g_all_of_the_lb_policies[i];
|
71
73
|
}
|
72
74
|
}
|
@@ -31,10 +31,10 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#ifndef
|
35
|
-
#define
|
34
|
+
#ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H
|
35
|
+
#define GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H
|
36
36
|
|
37
|
-
#include "src/core/ext/
|
37
|
+
#include "src/core/ext/client_channel/lb_policy_factory.h"
|
38
38
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
39
39
|
|
40
40
|
/** Initialize the registry and set \a default_factory as the factory to be
|
@@ -52,4 +52,4 @@ void grpc_register_lb_policy(grpc_lb_policy_factory *factory);
|
|
52
52
|
grpc_lb_policy *grpc_lb_policy_create(grpc_exec_ctx *exec_ctx, const char *name,
|
53
53
|
grpc_lb_policy_args *args);
|
54
54
|
|
55
|
-
#endif /*
|
55
|
+
#endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_LB_POLICY_REGISTRY_H */
|
@@ -31,11 +31,12 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#include "src/core/ext/
|
34
|
+
#include "src/core/ext/client_channel/parse_address.h"
|
35
|
+
#include "src/core/lib/iomgr/sockaddr.h"
|
35
36
|
|
36
37
|
#include <stdio.h>
|
37
38
|
#include <string.h>
|
38
|
-
#ifdef
|
39
|
+
#ifdef GRPC_HAVE_UNIX_SOCKET
|
39
40
|
#include <sys/un.h>
|
40
41
|
#endif
|
41
42
|
|
@@ -44,33 +45,39 @@
|
|
44
45
|
#include <grpc/support/log.h>
|
45
46
|
#include <grpc/support/string_util.h>
|
46
47
|
|
47
|
-
#ifdef
|
48
|
-
|
49
|
-
|
48
|
+
#ifdef GRPC_HAVE_UNIX_SOCKET
|
49
|
+
|
50
|
+
int parse_unix(grpc_uri *uri, grpc_resolved_address *resolved_addr) {
|
51
|
+
struct sockaddr_un *un = (struct sockaddr_un *)resolved_addr->addr;
|
50
52
|
|
51
53
|
un->sun_family = AF_UNIX;
|
52
54
|
strcpy(un->sun_path, uri->path);
|
53
|
-
|
55
|
+
resolved_addr->len = strlen(un->sun_path) + sizeof(un->sun_family) + 1;
|
54
56
|
|
55
57
|
return 1;
|
56
58
|
}
|
57
|
-
#endif
|
58
59
|
|
59
|
-
|
60
|
+
#else /* GRPC_HAVE_UNIX_SOCKET */
|
61
|
+
|
62
|
+
int parse_unix(grpc_uri *uri, grpc_resolved_address *resolved_addr) { abort(); }
|
63
|
+
|
64
|
+
#endif /* GRPC_HAVE_UNIX_SOCKET */
|
65
|
+
|
66
|
+
int parse_ipv4(grpc_uri *uri, grpc_resolved_address *resolved_addr) {
|
60
67
|
const char *host_port = uri->path;
|
61
68
|
char *host;
|
62
69
|
char *port;
|
63
70
|
int port_num;
|
64
71
|
int result = 0;
|
65
|
-
struct sockaddr_in *in = (struct sockaddr_in *)addr;
|
72
|
+
struct sockaddr_in *in = (struct sockaddr_in *)resolved_addr->addr;
|
66
73
|
|
67
74
|
if (*host_port == '/') ++host_port;
|
68
75
|
if (!gpr_split_host_port(host_port, &host, &port)) {
|
69
76
|
return 0;
|
70
77
|
}
|
71
78
|
|
72
|
-
memset(
|
73
|
-
|
79
|
+
memset(resolved_addr, 0, sizeof(grpc_resolved_address));
|
80
|
+
resolved_addr->len = sizeof(struct sockaddr_in);
|
74
81
|
in->sin_family = AF_INET;
|
75
82
|
if (inet_pton(AF_INET, host, &in->sin_addr) == 0) {
|
76
83
|
gpr_log(GPR_ERROR, "invalid ipv4 address: '%s'", host);
|
@@ -96,13 +103,13 @@ done:
|
|
96
103
|
return result;
|
97
104
|
}
|
98
105
|
|
99
|
-
int parse_ipv6(grpc_uri *uri,
|
106
|
+
int parse_ipv6(grpc_uri *uri, grpc_resolved_address *resolved_addr) {
|
100
107
|
const char *host_port = uri->path;
|
101
108
|
char *host;
|
102
109
|
char *port;
|
103
110
|
int port_num;
|
104
111
|
int result = 0;
|
105
|
-
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)addr;
|
112
|
+
struct sockaddr_in6 *in6 = (struct sockaddr_in6 *)resolved_addr->addr;
|
106
113
|
|
107
114
|
if (*host_port == '/') ++host_port;
|
108
115
|
if (!gpr_split_host_port(host_port, &host, &port)) {
|
@@ -110,7 +117,7 @@ int parse_ipv6(grpc_uri *uri, struct sockaddr_storage *addr, size_t *len) {
|
|
110
117
|
}
|
111
118
|
|
112
119
|
memset(in6, 0, sizeof(*in6));
|
113
|
-
|
120
|
+
resolved_addr->len = sizeof(*in6);
|
114
121
|
in6->sin6_family = AF_INET6;
|
115
122
|
if (inet_pton(AF_INET6, host, &in6->sin6_addr) == 0) {
|
116
123
|
gpr_log(GPR_ERROR, "invalid ipv6 address: '%s'", host);
|
@@ -31,26 +31,24 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#ifndef
|
35
|
-
#define
|
34
|
+
#ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_PARSE_ADDRESS_H
|
35
|
+
#define GRPC_CORE_EXT_CLIENT_CHANNEL_PARSE_ADDRESS_H
|
36
36
|
|
37
37
|
#include <stddef.h>
|
38
38
|
|
39
|
-
#include "src/core/ext/
|
40
|
-
#include "src/core/lib/iomgr/
|
39
|
+
#include "src/core/ext/client_channel/uri_parser.h"
|
40
|
+
#include "src/core/lib/iomgr/resolve_address.h"
|
41
41
|
|
42
|
-
#ifdef GPR_HAVE_UNIX_SOCKET
|
43
42
|
/** Populate \a addr and \a len from \a uri, whose path is expected to contain a
|
44
43
|
* unix socket path. Returns true upon success. */
|
45
|
-
int parse_unix(grpc_uri *uri,
|
46
|
-
#endif
|
44
|
+
int parse_unix(grpc_uri *uri, grpc_resolved_address *resolved_addr);
|
47
45
|
|
48
46
|
/** Populate /a addr and \a len from \a uri, whose path is expected to contain a
|
49
47
|
* host:port pair. Returns true upon success. */
|
50
|
-
int parse_ipv4(grpc_uri *uri,
|
48
|
+
int parse_ipv4(grpc_uri *uri, grpc_resolved_address *resolved_addr);
|
51
49
|
|
52
50
|
/** Populate /a addr and \a len from \a uri, whose path is expected to contain a
|
53
51
|
* host:port pair. Returns true upon success. */
|
54
|
-
int parse_ipv6(grpc_uri *uri,
|
52
|
+
int parse_ipv6(grpc_uri *uri, grpc_resolved_address *resolved_addr);
|
55
53
|
|
56
|
-
#endif /*
|
54
|
+
#endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_PARSE_ADDRESS_H */
|
@@ -31,7 +31,7 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#include "src/core/ext/
|
34
|
+
#include "src/core/ext/client_channel/resolver.h"
|
35
35
|
|
36
36
|
void grpc_resolver_init(grpc_resolver *resolver,
|
37
37
|
const grpc_resolver_vtable *vtable) {
|
@@ -76,7 +76,6 @@ void grpc_resolver_channel_saw_error(grpc_exec_ctx *exec_ctx,
|
|
76
76
|
}
|
77
77
|
|
78
78
|
void grpc_resolver_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
|
79
|
-
|
80
|
-
|
81
|
-
resolver->vtable->next(exec_ctx, resolver, target_config, on_complete);
|
79
|
+
grpc_channel_args **result, grpc_closure *on_complete) {
|
80
|
+
resolver->vtable->next(exec_ctx, resolver, result, on_complete);
|
82
81
|
}
|
@@ -31,18 +31,16 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#ifndef
|
35
|
-
#define
|
34
|
+
#ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_H
|
35
|
+
#define GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_H
|
36
36
|
|
37
|
-
#include "src/core/ext/
|
38
|
-
#include "src/core/ext/client_config/subchannel.h"
|
37
|
+
#include "src/core/ext/client_channel/subchannel.h"
|
39
38
|
#include "src/core/lib/iomgr/iomgr.h"
|
40
39
|
|
41
40
|
typedef struct grpc_resolver grpc_resolver;
|
42
41
|
typedef struct grpc_resolver_vtable grpc_resolver_vtable;
|
43
42
|
|
44
|
-
/** grpc_resolver provides
|
45
|
-
objects */
|
43
|
+
/** \a grpc_resolver provides \a grpc_channel_args objects to its caller */
|
46
44
|
struct grpc_resolver {
|
47
45
|
const grpc_resolver_vtable *vtable;
|
48
46
|
gpr_refcount refs;
|
@@ -53,7 +51,7 @@ struct grpc_resolver_vtable {
|
|
53
51
|
void (*shutdown)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver);
|
54
52
|
void (*channel_saw_error)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver);
|
55
53
|
void (*next)(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
|
56
|
-
|
54
|
+
grpc_channel_args **result, grpc_closure *on_complete);
|
57
55
|
};
|
58
56
|
|
59
57
|
#ifdef GRPC_RESOLVER_REFCOUNT_DEBUG
|
@@ -81,14 +79,12 @@ void grpc_resolver_shutdown(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver);
|
|
81
79
|
void grpc_resolver_channel_saw_error(grpc_exec_ctx *exec_ctx,
|
82
80
|
grpc_resolver *resolver);
|
83
81
|
|
84
|
-
/** Get the next
|
85
|
-
|
86
|
-
and then schedule on_complete for execution.
|
82
|
+
/** Get the next result from the resolver. Expected to set \a *result with
|
83
|
+
new channel args and then schedule \a on_complete for execution.
|
87
84
|
|
88
|
-
If resolution is fatally broken, set *
|
89
|
-
schedule on_complete. */
|
85
|
+
If resolution is fatally broken, set \a *result to NULL and
|
86
|
+
schedule \a on_complete. */
|
90
87
|
void grpc_resolver_next(grpc_exec_ctx *exec_ctx, grpc_resolver *resolver,
|
91
|
-
|
92
|
-
grpc_closure *on_complete);
|
88
|
+
grpc_channel_args **result, grpc_closure *on_complete);
|
93
89
|
|
94
|
-
#endif /*
|
90
|
+
#endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_H */
|
@@ -31,7 +31,7 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#include "src/core/ext/
|
34
|
+
#include "src/core/ext/client_channel/resolver_factory.h"
|
35
35
|
|
36
36
|
void grpc_resolver_factory_ref(grpc_resolver_factory* factory) {
|
37
37
|
factory->vtable->ref(factory);
|
@@ -43,9 +43,10 @@ void grpc_resolver_factory_unref(grpc_resolver_factory* factory) {
|
|
43
43
|
|
44
44
|
/** Create a resolver instance for a name */
|
45
45
|
grpc_resolver* grpc_resolver_factory_create_resolver(
|
46
|
-
|
46
|
+
grpc_exec_ctx* exec_ctx, grpc_resolver_factory* factory,
|
47
|
+
grpc_resolver_args* args) {
|
47
48
|
if (factory == NULL) return NULL;
|
48
|
-
return factory->vtable->create_resolver(factory, args);
|
49
|
+
return factory->vtable->create_resolver(exec_ctx, factory, args);
|
49
50
|
}
|
50
51
|
|
51
52
|
char* grpc_resolver_factory_get_default_authority(
|
@@ -31,25 +31,25 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#ifndef
|
35
|
-
#define
|
34
|
+
#ifndef GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_FACTORY_H
|
35
|
+
#define GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_FACTORY_H
|
36
36
|
|
37
|
-
#include "src/core/ext/
|
38
|
-
#include "src/core/ext/
|
39
|
-
#include "src/core/ext/
|
37
|
+
#include "src/core/ext/client_channel/client_channel_factory.h"
|
38
|
+
#include "src/core/ext/client_channel/resolver.h"
|
39
|
+
#include "src/core/ext/client_channel/uri_parser.h"
|
40
|
+
#include "src/core/lib/iomgr/pollset_set.h"
|
40
41
|
|
41
42
|
typedef struct grpc_resolver_factory grpc_resolver_factory;
|
42
43
|
typedef struct grpc_resolver_factory_vtable grpc_resolver_factory_vtable;
|
43
44
|
|
44
|
-
/** grpc_resolver provides grpc_client_config objects to grpc_channel
|
45
|
-
objects */
|
46
45
|
struct grpc_resolver_factory {
|
47
46
|
const grpc_resolver_factory_vtable *vtable;
|
48
47
|
};
|
49
48
|
|
50
49
|
typedef struct grpc_resolver_args {
|
51
50
|
grpc_uri *uri;
|
52
|
-
|
51
|
+
const grpc_channel_args *args;
|
52
|
+
grpc_pollset_set *pollset_set;
|
53
53
|
} grpc_resolver_args;
|
54
54
|
|
55
55
|
struct grpc_resolver_factory_vtable {
|
@@ -57,7 +57,8 @@ struct grpc_resolver_factory_vtable {
|
|
57
57
|
void (*unref)(grpc_resolver_factory *factory);
|
58
58
|
|
59
59
|
/** Implementation of grpc_resolver_factory_create_resolver */
|
60
|
-
grpc_resolver *(*create_resolver)(
|
60
|
+
grpc_resolver *(*create_resolver)(grpc_exec_ctx *exec_ctx,
|
61
|
+
grpc_resolver_factory *factory,
|
61
62
|
grpc_resolver_args *args);
|
62
63
|
|
63
64
|
/** Implementation of grpc_resolver_factory_get_default_authority */
|
@@ -72,11 +73,12 @@ void grpc_resolver_factory_unref(grpc_resolver_factory *resolver);
|
|
72
73
|
|
73
74
|
/** Create a resolver instance for a name */
|
74
75
|
grpc_resolver *grpc_resolver_factory_create_resolver(
|
75
|
-
|
76
|
+
grpc_exec_ctx *exec_ctx, grpc_resolver_factory *factory,
|
77
|
+
grpc_resolver_args *args);
|
76
78
|
|
77
79
|
/** Return a (freshly allocated with gpr_malloc) string representing
|
78
80
|
the default authority to use for this scheme. */
|
79
81
|
char *grpc_resolver_factory_get_default_authority(
|
80
82
|
grpc_resolver_factory *factory, grpc_uri *uri);
|
81
83
|
|
82
|
-
#endif /*
|
84
|
+
#endif /* GRPC_CORE_EXT_CLIENT_CHANNEL_RESOLVER_FACTORY_H */
|
@@ -31,7 +31,7 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#include "src/core/ext/
|
34
|
+
#include "src/core/ext/client_channel/resolver_registry.h"
|
35
35
|
|
36
36
|
#include <string.h>
|
37
37
|
|
@@ -40,24 +40,22 @@
|
|
40
40
|
#include <grpc/support/string_util.h>
|
41
41
|
|
42
42
|
#define MAX_RESOLVERS 10
|
43
|
+
#define DEFAULT_RESOLVER_PREFIX_MAX_LENGTH 32
|
43
44
|
|
44
45
|
static grpc_resolver_factory *g_all_of_the_resolvers[MAX_RESOLVERS];
|
45
46
|
static int g_number_of_resolvers = 0;
|
46
47
|
|
47
|
-
static char
|
48
|
+
static char g_default_resolver_prefix[DEFAULT_RESOLVER_PREFIX_MAX_LENGTH] =
|
49
|
+
"dns:///";
|
48
50
|
|
49
|
-
void grpc_resolver_registry_init(
|
50
|
-
g_default_resolver_prefix = gpr_strdup(default_resolver_prefix);
|
51
|
-
}
|
51
|
+
void grpc_resolver_registry_init() {}
|
52
52
|
|
53
53
|
void grpc_resolver_registry_shutdown(void) {
|
54
|
-
int i;
|
55
|
-
for (i = 0; i < g_number_of_resolvers; i++) {
|
54
|
+
for (int i = 0; i < g_number_of_resolvers; i++) {
|
56
55
|
grpc_resolver_factory_unref(g_all_of_the_resolvers[i]);
|
57
56
|
}
|
58
|
-
gpr_free(g_default_resolver_prefix);
|
59
57
|
// FIXME(ctiller): this should live in grpc_resolver_registry_init,
|
60
|
-
// however that would have the
|
58
|
+
// however that would have the client_channel plugin call this AFTER we start
|
61
59
|
// registering resolvers from third party plugins, and so they'd never show
|
62
60
|
// up.
|
63
61
|
// We likely need some kind of dependency system for plugins.... what form
|
@@ -65,6 +63,17 @@ void grpc_resolver_registry_shutdown(void) {
|
|
65
63
|
g_number_of_resolvers = 0;
|
66
64
|
}
|
67
65
|
|
66
|
+
void grpc_resolver_registry_set_default_prefix(
|
67
|
+
const char *default_resolver_prefix) {
|
68
|
+
const size_t len = strlen(default_resolver_prefix);
|
69
|
+
GPR_ASSERT(len < DEFAULT_RESOLVER_PREFIX_MAX_LENGTH &&
|
70
|
+
"default resolver prefix too long");
|
71
|
+
GPR_ASSERT(len > 0 && "default resolver prefix can't be empty");
|
72
|
+
// By the previous assert, default_resolver_prefix is safe to be copied with a
|
73
|
+
// plain strcpy.
|
74
|
+
strcpy(g_default_resolver_prefix, default_resolver_prefix);
|
75
|
+
}
|
76
|
+
|
68
77
|
void grpc_register_resolver_type(grpc_resolver_factory *factory) {
|
69
78
|
int i;
|
70
79
|
for (i = 0; i < g_number_of_resolvers; i++) {
|
@@ -100,52 +109,63 @@ static grpc_resolver_factory *lookup_factory_by_uri(grpc_uri *uri) {
|
|
100
109
|
}
|
101
110
|
|
102
111
|
static grpc_resolver_factory *resolve_factory(const char *target,
|
103
|
-
grpc_uri **uri
|
104
|
-
|
112
|
+
grpc_uri **uri,
|
113
|
+
char **canonical_target) {
|
105
114
|
grpc_resolver_factory *factory = NULL;
|
106
115
|
|
107
116
|
GPR_ASSERT(uri != NULL);
|
108
117
|
*uri = grpc_uri_parse(target, 1);
|
109
118
|
factory = lookup_factory_by_uri(*uri);
|
110
119
|
if (factory == NULL) {
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
if (factory == NULL) {
|
117
|
-
grpc_uri_destroy(grpc_uri_parse(target, 0));
|
118
|
-
grpc_uri_destroy(grpc_uri_parse(tmp, 0));
|
119
|
-
gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target,
|
120
|
-
tmp);
|
121
|
-
}
|
122
|
-
gpr_free(tmp);
|
123
|
-
} else {
|
120
|
+
grpc_uri_destroy(*uri);
|
121
|
+
gpr_asprintf(canonical_target, "%s%s", g_default_resolver_prefix, target);
|
122
|
+
*uri = grpc_uri_parse(*canonical_target, 1);
|
123
|
+
factory = lookup_factory_by_uri(*uri);
|
124
|
+
if (factory == NULL) {
|
124
125
|
grpc_uri_destroy(grpc_uri_parse(target, 0));
|
125
|
-
|
126
|
+
grpc_uri_destroy(grpc_uri_parse(*canonical_target, 0));
|
127
|
+
gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target,
|
128
|
+
*canonical_target);
|
126
129
|
}
|
127
130
|
}
|
128
131
|
return factory;
|
129
132
|
}
|
130
133
|
|
131
|
-
grpc_resolver *grpc_resolver_create(
|
132
|
-
|
134
|
+
grpc_resolver *grpc_resolver_create(grpc_exec_ctx *exec_ctx, const char *target,
|
135
|
+
const grpc_channel_args *args,
|
136
|
+
grpc_pollset_set *pollset_set) {
|
133
137
|
grpc_uri *uri = NULL;
|
134
|
-
|
138
|
+
char *canonical_target = NULL;
|
139
|
+
grpc_resolver_factory *factory =
|
140
|
+
resolve_factory(target, &uri, &canonical_target);
|
135
141
|
grpc_resolver *resolver;
|
136
|
-
grpc_resolver_args
|
137
|
-
memset(&
|
138
|
-
|
139
|
-
args
|
140
|
-
|
142
|
+
grpc_resolver_args resolver_args;
|
143
|
+
memset(&resolver_args, 0, sizeof(resolver_args));
|
144
|
+
resolver_args.uri = uri;
|
145
|
+
resolver_args.args = args;
|
146
|
+
resolver_args.pollset_set = pollset_set;
|
147
|
+
resolver =
|
148
|
+
grpc_resolver_factory_create_resolver(exec_ctx, factory, &resolver_args);
|
141
149
|
grpc_uri_destroy(uri);
|
150
|
+
gpr_free(canonical_target);
|
142
151
|
return resolver;
|
143
152
|
}
|
144
153
|
|
145
154
|
char *grpc_get_default_authority(const char *target) {
|
146
155
|
grpc_uri *uri = NULL;
|
147
|
-
|
156
|
+
char *canonical_target = NULL;
|
157
|
+
grpc_resolver_factory *factory =
|
158
|
+
resolve_factory(target, &uri, &canonical_target);
|
148
159
|
char *authority = grpc_resolver_factory_get_default_authority(factory, uri);
|
149
160
|
grpc_uri_destroy(uri);
|
161
|
+
gpr_free(canonical_target);
|
150
162
|
return authority;
|
151
163
|
}
|
164
|
+
|
165
|
+
char *grpc_resolver_factory_add_default_prefix_if_needed(const char *target) {
|
166
|
+
grpc_uri *uri = NULL;
|
167
|
+
char *canonical_target = NULL;
|
168
|
+
resolve_factory(target, &uri, &canonical_target);
|
169
|
+
grpc_uri_destroy(uri);
|
170
|
+
return canonical_target == NULL ? gpr_strdup(target) : canonical_target;
|
171
|
+
}
|