grpc 1.7.3 → 1.8.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.
- checksums.yaml +4 -4
- data/Makefile +2106 -2116
- data/include/grpc/census.h +1 -432
- data/include/grpc/compression.h +9 -9
- data/include/grpc/grpc.h +115 -98
- data/include/grpc/grpc_cronet.h +3 -3
- data/include/grpc/grpc_posix.h +4 -4
- data/include/grpc/grpc_security.h +160 -88
- data/include/grpc/grpc_security_constants.h +7 -0
- data/include/grpc/impl/codegen/atm.h +9 -1
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +13 -4
- data/include/grpc/impl/codegen/atm_gcc_sync.h +6 -5
- data/include/grpc/impl/codegen/atm_windows.h +23 -22
- data/include/grpc/impl/codegen/byte_buffer.h +14 -14
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -2
- data/include/grpc/impl/codegen/connectivity_state.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +32 -28
- data/include/grpc/impl/codegen/port_platform.h +48 -0
- data/include/grpc/impl/codegen/slice.h +10 -10
- data/include/grpc/impl/codegen/sync_generic.h +9 -3
- data/include/grpc/slice.h +16 -17
- data/include/grpc/slice_buffer.h +22 -22
- data/include/grpc/support/alloc.h +11 -11
- data/include/grpc/support/avl.h +28 -20
- data/include/grpc/support/cmdline.h +13 -13
- data/include/grpc/support/histogram.h +17 -17
- data/include/grpc/support/host_port.h +2 -2
- data/include/grpc/support/log.h +9 -9
- data/include/grpc/support/log_windows.h +1 -1
- data/include/grpc/support/string_util.h +2 -2
- data/include/grpc/support/subprocess.h +5 -5
- data/include/grpc/support/sync.h +43 -27
- data/include/grpc/support/thd.h +6 -6
- data/include/grpc/support/tls_gcc.h +1 -1
- data/include/grpc/support/tls_pthread.h +1 -1
- data/src/core/ext/census/{grpc_context.c → grpc_context.cc} +5 -8
- data/src/core/ext/filters/client_channel/backup_poller.cc +165 -0
- data/src/core/ext/{census/grpc_filter.h → filters/client_channel/backup_poller.h} +12 -7
- data/src/core/ext/filters/client_channel/{channel_connectivity.c → channel_connectivity.cc} +45 -42
- data/src/core/ext/filters/client_channel/{client_channel.c → client_channel.cc} +452 -417
- data/src/core/ext/filters/client_channel/client_channel.h +16 -8
- data/src/core/ext/filters/client_channel/{client_channel_factory.c → client_channel_factory.cc} +0 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +29 -21
- data/src/core/ext/filters/client_channel/{client_channel_plugin.c → client_channel_plugin.cc} +15 -19
- data/src/core/ext/filters/client_channel/{connector.c → connector.cc} +0 -0
- data/src/core/ext/filters/client_channel/connector.h +29 -21
- data/src/core/ext/filters/client_channel/{http_connect_handshaker.c → http_connect_handshaker.cc} +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +8 -0
- data/src/core/ext/filters/client_channel/{http_proxy.c → http_proxy.cc} +14 -14
- data/src/core/ext/filters/client_channel/http_proxy.h +8 -0
- data/src/core/ext/filters/client_channel/{lb_policy.c → lb_policy.cc} +47 -48
- data/src/core/ext/filters/client_channel/lb_policy.h +76 -70
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{client_load_reporting_filter.c → client_load_reporting_filter.cc} +28 -29
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb.c → grpclb.cc} +554 -563
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +17 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_channel_secure.c → grpclb_channel_secure.cc} +17 -17
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_client_stats.c → grpclb_client_stats.cc} +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{load_balancer_api.c → load_balancer_api.cc} +64 -67
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +20 -21
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +599 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +695 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +270 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +153 -0
- data/src/core/ext/filters/client_channel/{lb_policy_factory.c → lb_policy_factory.cc} +10 -10
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +48 -40
- data/src/core/ext/filters/client_channel/{lb_policy_registry.c → lb_policy_registry.cc} +9 -9
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +11 -3
- data/src/core/ext/filters/client_channel/{parse_address.c → parse_address.cc} +24 -24
- data/src/core/ext/filters/client_channel/parse_address.h +14 -6
- data/src/core/ext/filters/client_channel/{proxy_mapper.c → proxy_mapper.cc} +0 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +8 -0
- data/src/core/ext/filters/client_channel/{proxy_mapper_registry.c → proxy_mapper_registry.cc} +0 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -0
- data/src/core/ext/filters/client_channel/{resolver.c → resolver.cc} +21 -23
- data/src/core/ext/filters/client_channel/resolver.h +33 -27
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{dns_resolver_ares.c → dns_resolver_ares.cc} +133 -133
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +18 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_ev_driver_posix.c → grpc_ares_ev_driver_posix.cc} +58 -56
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_wrapper.c → grpc_ares_wrapper.cc} +118 -115
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +23 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +60 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/{dns_resolver.c → dns_resolver.cc} +100 -94
- data/src/core/ext/filters/client_channel/resolver/fake/{fake_resolver.c → fake_resolver.cc} +14 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +9 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/{sockaddr_resolver.c → sockaddr_resolver.cc} +60 -60
- data/src/core/ext/filters/client_channel/{resolver_factory.c → resolver_factory.cc} +2 -2
- data/src/core/ext/filters/client_channel/resolver_factory.h +27 -19
- data/src/core/ext/filters/client_channel/{resolver_registry.c → resolver_registry.cc} +35 -35
- data/src/core/ext/filters/client_channel/resolver_registry.h +18 -10
- data/src/core/ext/filters/client_channel/{retry_throttle.c → retry_throttle.cc} +10 -10
- data/src/core/ext/filters/client_channel/retry_throttle.h +8 -0
- data/src/core/ext/filters/client_channel/{subchannel.c → subchannel.cc} +210 -213
- data/src/core/ext/filters/client_channel/subchannel.h +68 -60
- data/src/core/ext/filters/client_channel/{subchannel_index.c → subchannel_index.cc} +52 -52
- data/src/core/ext/filters/client_channel/subchannel_index.h +22 -14
- data/src/core/ext/filters/client_channel/{uri_parser.c → uri_parser.cc} +29 -27
- data/src/core/ext/filters/client_channel/uri_parser.h +18 -10
- data/src/core/ext/filters/deadline/{deadline_filter.c → deadline_filter.cc} +12 -15
- data/src/core/ext/filters/deadline/deadline_filter.h +11 -2
- data/src/core/ext/filters/http/client/{http_client_filter.c → http_client_filter.cc} +83 -83
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -0
- data/src/core/ext/filters/http/{http_filters_plugin.c → http_filters_plugin.cc} +20 -21
- data/src/core/ext/filters/http/message_compress/{message_compress_filter.c → message_compress_filter.cc} +84 -83
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +9 -1
- data/src/core/ext/filters/http/server/{http_server_filter.c → http_server_filter.cc} +80 -78
- data/src/core/ext/filters/http/server/http_server_filter.h +8 -0
- data/src/core/ext/filters/load_reporting/{server_load_reporting_filter.c → server_load_reporting_filter.cc} +29 -29
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +9 -1
- data/src/core/ext/filters/load_reporting/{server_load_reporting_plugin.c → server_load_reporting_plugin.cc} +11 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +13 -5
- data/src/core/ext/filters/max_age/{max_age_filter.c → max_age_filter.cc} +46 -56
- data/src/core/ext/filters/max_age/max_age_filter.h +8 -0
- data/src/core/ext/filters/message_size/{message_size_filter.c → message_size_filter.cc} +62 -40
- data/src/core/ext/filters/message_size/message_size_filter.h +8 -0
- data/src/core/ext/filters/workarounds/{workaround_cronet_compression_filter.c → workaround_cronet_compression_filter.cc} +11 -11
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +8 -0
- data/src/core/ext/filters/workarounds/{workaround_utils.c → workaround_utils.cc} +7 -7
- data/src/core/ext/filters/workarounds/workaround_utils.h +9 -1
- data/src/core/ext/transport/chttp2/alpn/{alpn.c → alpn.cc} +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -2
- data/src/core/ext/transport/chttp2/client/{chttp2_connector.c → chttp2_connector.cc} +49 -45
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +8 -0
- data/src/core/ext/transport/chttp2/client/insecure/{channel_create.c → channel_create.cc} +28 -27
- data/src/core/ext/transport/chttp2/client/insecure/{channel_create_posix.c → channel_create_posix.cc} +14 -13
- data/src/core/ext/transport/chttp2/client/secure/{secure_channel_create.c → secure_channel_create.cc} +68 -66
- data/src/core/ext/transport/chttp2/server/{chttp2_server.c → chttp2_server.cc} +76 -77
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -3
- data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2.c → server_chttp2.cc} +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2_posix.c → server_chttp2_posix.cc} +13 -12
- data/src/core/ext/transport/chttp2/server/secure/{server_secure_chttp2.c → server_secure_chttp2.cc} +12 -10
- data/src/core/ext/transport/chttp2/transport/{bin_decoder.c → bin_decoder.cc} +7 -7
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +15 -7
- data/src/core/ext/transport/chttp2/transport/{bin_encoder.c → bin_encoder.cc} +11 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -0
- data/src/core/ext/transport/chttp2/transport/{chttp2_plugin.c → chttp2_plugin.cc} +2 -9
- data/src/core/ext/transport/chttp2/transport/{chttp2_transport.c → chttp2_transport.cc} +778 -778
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -10
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +385 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +337 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +8 -0
- data/src/core/ext/transport/chttp2/transport/{frame_data.c → frame_data.cc} +34 -34
- data/src/core/ext/transport/chttp2/transport/frame_data.h +25 -17
- data/src/core/ext/transport/chttp2/transport/{frame_goaway.c → frame_goaway.cc} +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -10
- data/src/core/ext/transport/chttp2/transport/{frame_ping.c → frame_ping.cc} +18 -19
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +12 -4
- data/src/core/ext/transport/chttp2/transport/{frame_rst_stream.c → frame_rst_stream.cc} +16 -16
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +16 -8
- data/src/core/ext/transport/chttp2/transport/{frame_settings.c → frame_settings.cc} +23 -24
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +17 -9
- data/src/core/ext/transport/chttp2/transport/{frame_window_update.c → frame_window_update.cc} +22 -24
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +14 -6
- data/src/core/ext/transport/chttp2/transport/{hpack_encoder.c → hpack_encoder.cc} +206 -161
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +23 -13
- data/src/core/ext/transport/chttp2/transport/{hpack_parser.c → hpack_parser.cc} +340 -334
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +30 -22
- data/src/core/ext/transport/chttp2/transport/{hpack_table.c → hpack_table.cc} +25 -25
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +19 -11
- data/src/core/ext/transport/chttp2/transport/{http2_settings.c → http2_settings.cc} +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -2
- data/src/core/ext/transport/chttp2/transport/{huffsyms.c → huffsyms.cc} +0 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +8 -0
- data/src/core/ext/transport/chttp2/transport/{incoming_metadata.c → incoming_metadata.cc} +14 -13
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +18 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +214 -340
- data/src/core/ext/transport/chttp2/transport/{parsing.c → parsing.cc} +152 -141
- data/src/core/ext/transport/chttp2/transport/{stream_lists.c → stream_lists.cc} +53 -53
- data/src/core/ext/transport/chttp2/transport/{stream_map.c → stream_map.cc} +35 -34
- data/src/core/ext/transport/chttp2/transport/stream_map.h +22 -14
- data/src/core/ext/transport/chttp2/transport/{varint.c → varint.cc} +0 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +8 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +636 -0
- data/src/core/ext/transport/inproc/{inproc_plugin.c → inproc_plugin.cc} +5 -6
- data/src/core/ext/transport/inproc/{inproc_transport.c → inproc_transport.cc} +479 -544
- data/src/core/ext/transport/inproc/inproc_transport.h +4 -4
- data/src/core/lib/backoff/backoff.cc +80 -0
- data/src/core/lib/backoff/backoff.h +83 -0
- data/src/core/lib/channel/{channel_args.c → channel_args.cc} +92 -92
- data/src/core/lib/channel/channel_args.h +45 -37
- data/src/core/lib/channel/{channel_stack.c → channel_stack.cc} +67 -68
- data/src/core/lib/channel/channel_stack.h +76 -75
- data/src/core/lib/channel/{channel_stack_builder.c → channel_stack_builder.cc} +91 -91
- data/src/core/lib/channel/channel_stack_builder.h +45 -45
- data/src/core/lib/channel/{connected_channel.c → connected_channel.cc} +70 -70
- data/src/core/lib/channel/connected_channel.h +12 -4
- data/src/core/lib/channel/context.h +2 -2
- data/src/core/lib/channel/{handshaker.c → handshaker.cc} +7 -9
- data/src/core/lib/channel/handshaker.h +9 -1
- data/src/core/lib/channel/{handshaker_factory.c → handshaker_factory.cc} +7 -7
- data/src/core/lib/channel/handshaker_factory.h +18 -10
- data/src/core/lib/channel/{handshaker_registry.c → handshaker_registry.cc} +0 -0
- data/src/core/lib/channel/handshaker_registry.h +8 -0
- data/src/core/lib/compression/algorithm_metadata.h +8 -0
- data/src/core/lib/compression/{compression.c → compression.cc} +9 -9
- data/src/core/lib/compression/{message_compress.c → message_compress.cc} +0 -0
- data/src/core/lib/compression/message_compress.h +8 -0
- data/src/core/lib/compression/{stream_compression.c → stream_compression.cc} +12 -12
- data/src/core/lib/compression/stream_compression.h +27 -19
- data/src/core/lib/compression/{stream_compression_gzip.c → stream_compression_gzip.cc} +35 -36
- data/src/core/lib/compression/stream_compression_gzip.h +8 -0
- data/src/core/lib/compression/{stream_compression_identity.c → stream_compression_identity.cc} +19 -20
- data/src/core/lib/compression/stream_compression_identity.h +8 -0
- data/src/core/lib/debug/{stats.c → stats.cc} +19 -19
- data/src/core/lib/debug/stats.h +17 -9
- data/src/core/lib/debug/{stats_data.c → stats_data.cc} +45 -22
- data/src/core/lib/debug/stats_data.h +58 -19
- data/src/core/lib/debug/trace.cc +142 -0
- data/src/core/lib/debug/trace.h +74 -14
- data/src/core/lib/http/{format_request.c → format_request.cc} +10 -10
- data/src/core/lib/http/format_request.h +12 -4
- data/src/core/lib/http/{httpcli.c → httpcli.cc} +80 -80
- data/src/core/lib/http/httpcli.h +41 -33
- data/src/core/lib/http/{httpcli_security_connector.c → httpcli_security_connector.cc} +69 -55
- data/src/core/lib/http/{parser.c → parser.cc} +42 -42
- data/src/core/lib/http/parser.h +28 -20
- data/src/core/lib/{support → iomgr}/block_annotate.h +17 -8
- data/src/core/lib/iomgr/{call_combiner.c → call_combiner.cc} +29 -17
- data/src/core/lib/iomgr/call_combiner.h +9 -1
- data/src/core/lib/iomgr/closure.h +220 -62
- data/src/core/lib/iomgr/{combiner.c → combiner.cc} +63 -62
- data/src/core/lib/iomgr/combiner.h +16 -8
- data/src/core/lib/iomgr/{endpoint.c → endpoint.cc} +6 -0
- data/src/core/lib/iomgr/endpoint.h +47 -32
- data/src/core/lib/iomgr/endpoint_pair.h +12 -4
- data/src/core/lib/iomgr/{endpoint_pair_posix.c → endpoint_pair_posix.cc} +3 -3
- data/src/core/lib/iomgr/{endpoint_pair_uv.c → endpoint_pair_uv.cc} +2 -2
- data/src/core/lib/iomgr/{endpoint_pair_windows.c → endpoint_pair_windows.cc} +6 -6
- data/src/core/lib/iomgr/{error.c → error.cc} +125 -124
- data/src/core/lib/iomgr/error.h +32 -27
- data/src/core/lib/iomgr/error_internal.h +11 -2
- data/src/core/lib/iomgr/{ev_epoll1_linux.c → ev_epoll1_linux.cc} +214 -215
- data/src/core/lib/iomgr/ev_epoll1_linux.h +9 -1
- data/src/core/lib/iomgr/ev_epollex_linux.cc +1488 -0
- data/src/core/lib/iomgr/ev_epollex_linux.h +9 -1
- data/src/core/lib/iomgr/{ev_epollsig_linux.c → ev_epollsig_linux.cc} +304 -305
- data/src/core/lib/iomgr/ev_epollsig_linux.h +12 -4
- data/src/core/lib/iomgr/{ev_poll_posix.c → ev_poll_posix.cc} +272 -283
- data/src/core/lib/iomgr/ev_poll_posix.h +10 -2
- data/src/core/lib/iomgr/ev_posix.cc +288 -0
- data/src/core/lib/iomgr/ev_posix.h +75 -67
- data/src/core/lib/iomgr/{ev_windows.c → ev_windows.cc} +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +177 -0
- data/src/core/lib/iomgr/exec_ctx.h +35 -13
- data/src/core/lib/iomgr/{executor.c → executor.cc} +34 -35
- data/src/core/lib/iomgr/executor.h +12 -4
- data/src/core/lib/iomgr/{fork_posix.c → fork_posix.cc} +0 -0
- data/src/core/lib/iomgr/{fork_windows.c → fork_windows.cc} +0 -0
- data/src/core/lib/iomgr/gethostname.h +9 -1
- data/src/core/lib/iomgr/{gethostname_fallback.c → gethostname_fallback.cc} +2 -1
- data/src/core/lib/iomgr/{gethostname_host_name_max.c → gethostname_host_name_max.cc} +4 -3
- data/src/core/lib/iomgr/{gethostname_sysconf.c → gethostname_sysconf.cc} +3 -2
- data/src/core/lib/iomgr/{iocp_windows.c → iocp_windows.cc} +23 -25
- data/src/core/lib/iomgr/iocp_windows.h +17 -3
- data/src/core/lib/iomgr/{iomgr.c → iomgr.cc} +25 -19
- data/src/core/lib/iomgr/iomgr.h +11 -3
- data/src/core/lib/iomgr/iomgr_internal.h +13 -5
- data/src/core/lib/iomgr/{iomgr_posix.c → iomgr_posix.cc} +0 -1
- data/src/core/lib/iomgr/{iomgr_uv.c → iomgr_uv.cc} +1 -1
- data/src/core/lib/iomgr/iomgr_uv.h +8 -0
- data/src/core/lib/iomgr/{iomgr_windows.c → iomgr_windows.cc} +0 -0
- data/src/core/lib/iomgr/{is_epollexclusive_available.c → is_epollexclusive_available.cc} +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.h +8 -0
- data/src/core/lib/iomgr/{load_file.c → load_file.cc} +12 -12
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/{lockfree_event.c → lockfree_event.cc} +76 -68
- data/src/core/lib/iomgr/lockfree_event.h +30 -11
- data/src/core/lib/iomgr/{network_status_tracker.c → network_status_tracker.cc} +3 -2
- data/src/core/lib/iomgr/network_status_tracker.h +2 -2
- data/src/core/lib/iomgr/{polling_entity.c → polling_entity.cc} +18 -18
- data/src/core/lib/iomgr/polling_entity.h +21 -13
- data/src/core/lib/iomgr/pollset.h +17 -11
- data/src/core/lib/iomgr/pollset_set.h +23 -15
- data/src/core/lib/iomgr/{pollset_set_uv.c → pollset_set_uv.cc} +0 -0
- data/src/core/lib/iomgr/{pollset_set_windows.c → pollset_set_windows.cc} +0 -0
- data/src/core/lib/iomgr/{pollset_uv.c → pollset_uv.cc} +31 -29
- data/src/core/lib/iomgr/pollset_uv.h +8 -0
- data/src/core/lib/iomgr/{pollset_windows.c → pollset_windows.cc} +24 -24
- data/src/core/lib/iomgr/pollset_windows.h +17 -4
- data/src/core/lib/iomgr/port.h +10 -0
- data/src/core/lib/iomgr/resolve_address.h +18 -10
- data/src/core/lib/iomgr/{resolve_address_posix.c → resolve_address_posix.cc} +40 -40
- data/src/core/lib/iomgr/{resolve_address_uv.c → resolve_address_uv.cc} +61 -56
- data/src/core/lib/iomgr/{resolve_address_windows.c → resolve_address_windows.cc} +36 -34
- data/src/core/lib/iomgr/{resource_quota.c → resource_quota.cc} +209 -180
- data/src/core/lib/iomgr/resource_quota.h +45 -37
- data/src/core/lib/iomgr/{sockaddr_utils.c → sockaddr_utils.cc} +61 -61
- data/src/core/lib/iomgr/sockaddr_utils.h +23 -15
- data/src/core/lib/iomgr/sockaddr_windows.h +6 -0
- data/src/core/lib/iomgr/{socket_factory_posix.c → socket_factory_posix.cc} +20 -20
- data/src/core/lib/iomgr/socket_factory_posix.h +15 -15
- data/src/core/lib/iomgr/{socket_mutator.c → socket_mutator.cc} +18 -18
- data/src/core/lib/iomgr/socket_mutator.h +11 -11
- data/src/core/lib/iomgr/socket_utils.h +9 -1
- data/src/core/lib/iomgr/{socket_utils_common_posix.c → socket_utils_common_posix.cc} +28 -28
- data/src/core/lib/iomgr/{socket_utils_linux.c → socket_utils_linux.cc} +3 -3
- data/src/core/lib/iomgr/{socket_utils_posix.c → socket_utils_posix.cc} +3 -3
- data/src/core/lib/iomgr/socket_utils_posix.h +26 -18
- data/src/core/lib/iomgr/{socket_utils_uv.c → socket_utils_uv.cc} +1 -1
- data/src/core/lib/iomgr/{socket_utils_windows.c → socket_utils_windows.cc} +2 -2
- data/src/core/lib/iomgr/{socket_windows.c → socket_windows.cc} +18 -18
- data/src/core/lib/iomgr/socket_windows.h +26 -13
- data/src/core/lib/iomgr/tcp_client.h +14 -6
- data/src/core/lib/iomgr/{tcp_client_posix.c → tcp_client_posix.cc} +69 -70
- data/src/core/lib/iomgr/tcp_client_posix.h +11 -3
- data/src/core/lib/iomgr/{tcp_client_uv.c → tcp_client_uv.cc} +47 -48
- data/src/core/lib/iomgr/{tcp_client_windows.c → tcp_client_windows.cc} +46 -44
- data/src/core/lib/iomgr/{tcp_posix.c → tcp_posix.cc} +198 -175
- data/src/core/lib/iomgr/tcp_posix.h +15 -7
- data/src/core/lib/iomgr/tcp_server.h +31 -23
- data/src/core/lib/iomgr/{tcp_server_posix.c → tcp_server_posix.cc} +78 -77
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +27 -19
- data/src/core/lib/iomgr/{tcp_server_utils_posix_common.c → tcp_server_utils_posix_common.cc} +27 -27
- data/src/core/lib/iomgr/{tcp_server_utils_posix_ifaddrs.c → tcp_server_utils_posix_ifaddrs.cc} +25 -25
- data/src/core/lib/iomgr/{tcp_server_utils_posix_noifaddrs.c → tcp_server_utils_posix_noifaddrs.cc} +2 -2
- data/src/core/lib/iomgr/{tcp_server_uv.c → tcp_server_uv.cc} +133 -105
- data/src/core/lib/iomgr/{tcp_server_windows.c → tcp_server_windows.cc} +81 -77
- data/src/core/lib/iomgr/tcp_uv.cc +420 -0
- data/src/core/lib/iomgr/tcp_uv.h +18 -4
- data/src/core/lib/iomgr/{tcp_windows.c → tcp_windows.cc} +90 -79
- data/src/core/lib/iomgr/tcp_windows.h +17 -4
- data/src/core/lib/iomgr/{time_averaged_stats.c → time_averaged_stats.cc} +0 -0
- data/src/core/lib/iomgr/time_averaged_stats.h +8 -0
- data/src/core/lib/iomgr/timer.h +16 -9
- data/src/core/lib/iomgr/{timer_generic.c → timer_generic.cc} +130 -171
- data/src/core/lib/iomgr/timer_generic.h +4 -4
- data/src/core/lib/iomgr/{timer_heap.c → timer_heap.cc} +20 -21
- data/src/core/lib/iomgr/timer_heap.h +16 -8
- data/src/core/lib/iomgr/{timer_manager.c → timer_manager.cc} +54 -52
- data/src/core/lib/iomgr/timer_manager.h +8 -0
- data/src/core/lib/iomgr/{timer_uv.c → timer_uv.cc} +22 -24
- data/src/core/lib/iomgr/timer_uv.h +2 -2
- data/src/core/lib/iomgr/{udp_server.c → udp_server.cc} +75 -75
- data/src/core/lib/iomgr/udp_server.h +25 -17
- data/src/core/lib/iomgr/{unix_sockets_posix.c → unix_sockets_posix.cc} +22 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +14 -6
- data/src/core/lib/iomgr/{unix_sockets_posix_noop.c → unix_sockets_posix_noop.cc} +5 -5
- data/src/core/lib/iomgr/{wakeup_fd_cv.c → wakeup_fd_cv.cc} +2 -2
- data/src/core/lib/iomgr/wakeup_fd_cv.h +10 -0
- data/src/core/lib/iomgr/{wakeup_fd_eventfd.c → wakeup_fd_eventfd.cc} +0 -0
- data/src/core/lib/iomgr/{wakeup_fd_nospecial.c → wakeup_fd_nospecial.cc} +0 -0
- data/src/core/lib/iomgr/{wakeup_fd_pipe.c → wakeup_fd_pipe.cc} +1 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +9 -1
- data/src/core/lib/iomgr/{wakeup_fd_posix.c → wakeup_fd_posix.cc} +6 -7
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -0
- data/src/core/lib/json/{json.c → json.cc} +0 -0
- data/src/core/lib/json/json.h +8 -0
- data/src/core/lib/json/{json_reader.c → json_reader.cc} +18 -18
- data/src/core/lib/json/json_reader.h +26 -18
- data/src/core/lib/json/{json_string.c → json_string.cc} +57 -57
- data/src/core/lib/json/{json_writer.c → json_writer.cc} +20 -20
- data/src/core/lib/json/json_writer.h +23 -15
- data/src/core/lib/profiling/{basic_timers.c → basic_timers.cc} +34 -34
- data/src/core/lib/profiling/{stap_timers.c → stap_timers.cc} +5 -5
- data/src/core/lib/profiling/timers.h +6 -6
- data/src/core/lib/security/context/{security_context.c → security_context.cc} +98 -95
- data/src/core/lib/security/context/security_context.h +27 -29
- data/src/core/lib/security/credentials/composite/{composite_credentials.c → composite_credentials.cc} +79 -73
- data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -9
- data/src/core/lib/security/credentials/{credentials.c → credentials.cc} +97 -92
- data/src/core/lib/security/credentials/credentials.h +83 -75
- data/src/core/lib/security/credentials/{credentials_metadata.c → credentials_metadata.cc} +7 -6
- data/src/core/lib/security/credentials/fake/{fake_credentials.c → fake_credentials.cc} +39 -36
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
- data/src/core/lib/security/credentials/google_default/{credentials_generic.c → credentials_generic.cc} +5 -5
- data/src/core/lib/security/credentials/google_default/{google_default_credentials.c → google_default_credentials.cc} +55 -55
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -1
- data/src/core/lib/security/credentials/iam/{iam_credentials.c → iam_credentials.cc} +19 -18
- data/src/core/lib/security/credentials/jwt/{json_token.c → json_token.cc} +80 -75
- data/src/core/lib/security/credentials/jwt/json_token.h +23 -15
- data/src/core/lib/security/credentials/jwt/{jwt_credentials.c → jwt_credentials.cc} +45 -41
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -3
- data/src/core/lib/security/credentials/jwt/{jwt_verifier.c → jwt_verifier.cc} +262 -252
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +38 -30
- data/src/core/lib/security/credentials/oauth2/{oauth2_credentials.c → oauth2_credentials.cc} +138 -141
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +30 -22
- data/src/core/lib/security/credentials/plugin/{plugin_credentials.c → plugin_credentials.cc} +52 -53
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +7 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +344 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +27 -0
- data/src/core/lib/security/transport/auth_filters.h +16 -0
- data/src/core/lib/security/transport/{client_auth_filter.c → client_auth_filter.cc} +127 -115
- data/src/core/lib/security/transport/{lb_targets_info.c → lb_targets_info.cc} +16 -13
- data/src/core/lib/security/transport/lb_targets_info.h +11 -3
- data/src/core/lib/security/transport/{secure_endpoint.c → secure_endpoint.cc} +84 -76
- data/src/core/lib/security/transport/secure_endpoint.h +13 -5
- data/src/core/lib/security/transport/security_connector.cc +1121 -0
- data/src/core/lib/security/transport/security_connector.h +97 -79
- data/src/core/lib/security/transport/{security_handshaker.c → security_handshaker.cc} +139 -132
- data/src/core/lib/security/transport/security_handshaker.h +11 -3
- data/src/core/lib/security/transport/{server_auth_filter.c → server_auth_filter.cc} +68 -68
- data/src/core/lib/security/transport/{tsi_error.c → tsi_error.cc} +1 -1
- data/src/core/lib/security/transport/tsi_error.h +9 -1
- data/src/core/lib/security/util/{json_util.c → json_util.cc} +11 -11
- data/src/core/lib/security/util/json_util.h +12 -4
- data/src/core/lib/slice/{b64.c → b64.cc} +15 -15
- data/src/core/lib/slice/b64.h +12 -4
- data/src/core/lib/slice/{percent_encoding.c → percent_encoding.cc} +15 -15
- data/src/core/lib/slice/percent_encoding.h +11 -3
- data/src/core/lib/slice/{slice.c → slice.cc} +64 -64
- data/src/core/lib/slice/{slice_buffer.c → slice_buffer.cc} +38 -38
- data/src/core/lib/slice/{slice_hash_table.c → slice_hash_table.cc} +7 -7
- data/src/core/lib/slice/slice_hash_table.h +19 -11
- data/src/core/lib/slice/{slice_intern.c → slice_intern.cc} +35 -34
- data/src/core/lib/slice/slice_internal.h +17 -6
- data/src/core/lib/slice/{slice_string_helpers.c → slice_string_helpers.cc} +9 -9
- data/src/core/lib/slice/slice_string_helpers.h +3 -3
- data/src/core/lib/support/abstract.h +29 -0
- data/src/core/lib/support/{alloc.c → alloc.cc} +22 -22
- data/src/core/lib/support/{arena.c → arena.cc} +12 -12
- data/src/core/lib/support/arena.h +11 -3
- data/src/core/lib/support/{atm.c → atm.cc} +1 -1
- data/src/core/lib/support/{avl.c → avl.cc} +71 -70
- data/src/core/lib/support/{cmdline.c → cmdline.cc} +62 -62
- data/src/core/lib/support/{cpu_iphone.c → cpu_iphone.cc} +2 -0
- data/src/core/lib/support/{cpu_linux.c → cpu_linux.cc} +10 -0
- data/src/core/lib/support/{cpu_posix.c → cpu_posix.cc} +27 -4
- data/src/core/lib/support/{cpu_windows.c → cpu_windows.cc} +1 -0
- data/src/core/lib/support/env.h +3 -3
- data/src/core/lib/support/{env_linux.c → env_linux.cc} +11 -11
- data/src/core/lib/support/{env_posix.c → env_posix.cc} +4 -4
- data/src/core/lib/support/{env_windows.c → env_windows.cc} +5 -5
- data/src/core/lib/support/{fork.c → fork.cc} +2 -2
- data/src/core/lib/support/{histogram.c → histogram.cc} +25 -26
- data/src/core/lib/support/{host_port.c → host_port.cc} +16 -16
- data/src/core/lib/support/{log.c → log.cc} +8 -8
- data/src/core/lib/support/{log_android.c → log_android.cc} +7 -7
- data/src/core/lib/support/{log_linux.c → log_linux.cc} +8 -8
- data/src/core/lib/support/{log_posix.c → log_posix.cc} +9 -10
- data/src/core/lib/support/{log_windows.c → log_windows.cc} +7 -7
- data/src/core/lib/support/manual_constructor.h +211 -0
- data/src/core/lib/support/memory.h +41 -0
- data/src/core/lib/support/mpscq.cc +114 -0
- data/src/core/lib/support/mpscq.h +45 -7
- data/src/core/lib/support/{murmur_hash.c → murmur_hash.cc} +9 -12
- data/src/core/lib/support/murmur_hash.h +9 -1
- data/src/core/lib/support/spinlock.h +8 -1
- data/src/core/lib/support/{string.c → string.cc} +56 -55
- data/src/core/lib/support/string.h +21 -21
- data/src/core/lib/support/{string_posix.c → string_posix.cc} +5 -4
- data/src/core/lib/support/{string_util_windows.c → string_util_windows.cc} +9 -6
- data/src/core/lib/support/{string_windows.c → string_windows.cc} +3 -2
- data/src/core/lib/support/string_windows.h +8 -0
- data/src/core/lib/support/{subprocess_posix.c → subprocess_posix.cc} +13 -13
- data/src/core/lib/support/{subprocess_windows.c → subprocess_windows.cc} +9 -9
- data/src/core/lib/support/{sync.c → sync.cc} +22 -22
- data/src/core/lib/support/{sync_posix.c → sync_posix.cc} +6 -2
- data/src/core/lib/support/{sync_windows.c → sync_windows.cc} +14 -14
- data/src/core/lib/support/{thd.c → thd.cc} +0 -0
- data/src/core/lib/support/{thd_posix.c → thd_posix.cc} +10 -10
- data/src/core/lib/support/{thd_windows.c → thd_windows.cc} +10 -10
- data/src/core/lib/support/{time.c → time.cc} +0 -0
- data/src/core/lib/support/{time_posix.c → time_posix.cc} +5 -6
- data/src/core/lib/support/{time_precise.c → time_precise.cc} +6 -4
- data/src/core/lib/support/time_precise.h +9 -1
- data/src/core/lib/support/{time_windows.c → time_windows.cc} +2 -3
- data/src/core/lib/support/{tls_pthread.c → tls_pthread.cc} +2 -2
- data/src/core/lib/support/tmpfile.h +1 -1
- data/src/core/lib/support/{tmpfile_msys.c → tmpfile_msys.cc} +2 -2
- data/src/core/lib/support/{tmpfile_posix.c → tmpfile_posix.cc} +7 -7
- data/src/core/lib/support/{tmpfile_windows.c → tmpfile_windows.cc} +2 -2
- data/src/core/lib/support/{wrap_memcpy.c → wrap_memcpy.cc} +4 -2
- data/src/core/lib/surface/{alarm.c → alarm.cc} +32 -31
- data/src/core/lib/surface/alarm_internal.h +10 -2
- data/src/core/lib/surface/{api_trace.c → api_trace.cc} +1 -1
- data/src/core/lib/surface/api_trace.h +2 -2
- data/src/core/lib/surface/{byte_buffer.c → byte_buffer.cc} +13 -13
- data/src/core/lib/surface/{byte_buffer_reader.c → byte_buffer_reader.cc} +9 -9
- data/src/core/lib/surface/{call.c → call.cc} +379 -372
- data/src/core/lib/surface/call.h +37 -38
- data/src/core/lib/surface/{call_details.c → call_details.cc} +0 -0
- data/src/core/lib/surface/{call_log_batch.c → call_log_batch.cc} +13 -11
- data/src/core/lib/surface/call_test_only.h +5 -5
- data/src/core/lib/surface/{channel.c → channel.cc} +94 -95
- data/src/core/lib/surface/channel.h +29 -21
- data/src/core/lib/surface/{channel_init.c → channel_init.cc} +13 -13
- data/src/core/lib/surface/channel_init.h +6 -6
- data/src/core/lib/surface/{channel_ping.c → channel_ping.cc} +12 -12
- data/src/core/lib/surface/{channel_stack_type.c → channel_stack_type.cc} +1 -1
- data/src/core/lib/surface/channel_stack_type.h +9 -1
- data/src/core/lib/surface/{completion_queue.c → completion_queue.cc} +416 -379
- data/src/core/lib/surface/completion_queue.h +29 -29
- data/src/core/lib/surface/{completion_queue_factory.c → completion_queue_factory.cc} +1 -1
- data/src/core/lib/surface/completion_queue_factory.h +8 -0
- data/src/core/lib/surface/{event_string.c → event_string.cc} +9 -9
- data/src/core/lib/surface/event_string.h +9 -1
- data/src/core/lib/surface/{init.c → init.cc} +16 -39
- data/src/core/lib/surface/init.h +8 -0
- data/src/core/lib/surface/{init_secure.c → init_secure.cc} +12 -25
- data/src/core/lib/surface/lame_client.cc +38 -40
- data/src/core/lib/surface/lame_client.h +8 -0
- data/src/core/lib/surface/{metadata_array.c → metadata_array.cc} +0 -0
- data/src/core/lib/surface/{server.c → server.cc} +340 -404
- data/src/core/lib/surface/server.h +22 -14
- data/src/core/lib/surface/{validate_metadata.c → validate_metadata.cc} +10 -9
- data/src/core/lib/surface/validate_metadata.h +10 -2
- data/src/core/lib/surface/{version.c → version.cc} +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +84 -0
- data/src/core/lib/transport/bdp_estimator.h +67 -42
- data/src/core/lib/transport/{byte_stream.c → byte_stream.cc} +51 -51
- data/src/core/lib/transport/byte_stream.h +41 -33
- data/src/core/lib/transport/{connectivity_state.c → connectivity_state.cc} +36 -40
- data/src/core/lib/transport/connectivity_state.h +29 -21
- data/src/core/lib/transport/{error_utils.c → error_utils.cc} +26 -22
- data/src/core/lib/transport/error_utils.h +18 -6
- data/src/core/lib/transport/{metadata.c → metadata.cc} +92 -88
- data/src/core/lib/transport/metadata.h +22 -20
- data/src/core/lib/transport/{metadata_batch.c → metadata_batch.cc} +78 -79
- data/src/core/lib/transport/metadata_batch.h +46 -45
- data/src/core/lib/transport/pid_controller.cc +48 -0
- data/src/core/lib/transport/pid_controller.h +84 -32
- data/src/core/lib/transport/{service_config.c → service_config.cc} +66 -48
- data/src/core/lib/transport/service_config.h +11 -2
- data/src/core/lib/transport/{static_metadata.c → static_metadata.cc} +2 -2
- data/src/core/lib/transport/static_metadata.h +30 -23
- data/src/core/lib/transport/{status_conversion.c → status_conversion.cc} +4 -3
- data/src/core/lib/transport/status_conversion.h +12 -2
- data/src/core/lib/transport/{timeout_encoding.c → timeout_encoding.cc} +28 -61
- data/src/core/lib/transport/timeout_encoding.h +11 -2
- data/src/core/lib/transport/{transport.c → transport.cc} +79 -79
- data/src/core/lib/transport/transport.h +78 -80
- data/src/core/lib/transport/transport_impl.h +27 -19
- data/src/core/lib/transport/{transport_op_string.c → transport_op_string.cc} +32 -30
- data/src/core/plugin_registry/{grpc_plugin_registry.c → grpc_plugin_registry.cc} +34 -38
- data/src/core/tsi/{fake_transport_security.c → fake_transport_security.cc} +141 -132
- data/src/core/tsi/fake_transport_security.h +5 -5
- data/src/core/tsi/{gts_transport_security.c → gts_transport_security.cc} +4 -4
- data/src/core/tsi/gts_transport_security.h +11 -3
- data/src/core/tsi/{ssl_transport_security.c → ssl_transport_security.cc} +309 -300
- data/src/core/tsi/ssl_transport_security.h +25 -25
- data/src/core/tsi/ssl_types.h +8 -0
- data/src/core/tsi/{transport_security.c → transport_security.cc} +94 -87
- data/src/core/tsi/transport_security.h +55 -55
- data/src/core/tsi/{transport_security_adapter.c → transport_security_adapter.cc} +58 -55
- data/src/core/tsi/transport_security_adapter.h +2 -2
- data/src/core/tsi/{transport_security_grpc.c → transport_security_grpc.cc} +21 -21
- data/src/core/tsi/transport_security_grpc.h +19 -19
- data/src/core/tsi/transport_security_interface.h +41 -41
- data/src/ruby/ext/grpc/extconf.rb +4 -2
- data/src/ruby/ext/grpc/rb_byte_buffer.c +5 -5
- data/src/ruby/ext/grpc/rb_byte_buffer.h +2 -2
- data/src/ruby/ext/grpc/rb_call.c +41 -42
- data/src/ruby/ext/grpc/rb_call.h +6 -6
- data/src/ruby/ext/grpc/rb_call_credentials.c +30 -30
- data/src/ruby/ext/grpc/rb_channel.c +87 -87
- data/src/ruby/ext/grpc/rb_channel_credentials.c +23 -23
- data/src/ruby/ext/grpc/rb_completion_queue.c +11 -11
- data/src/ruby/ext/grpc/rb_completion_queue.h +3 -3
- data/src/ruby/ext/grpc/rb_compression_options.c +20 -20
- data/src/ruby/ext/grpc/rb_event_thread.c +14 -14
- data/src/ruby/ext/grpc/rb_event_thread.h +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +8 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +16 -58
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +242 -306
- data/src/ruby/ext/grpc/rb_server.c +23 -23
- data/src/ruby/ext/grpc/rb_server_credentials.c +13 -13
- data/src/ruby/lib/grpc/generic/rpc_server.rb +25 -12
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/checker.rb +14 -0
- data/src/ruby/spec/pb/health/checker_spec.rb +29 -0
- data/third_party/cares/config_freebsd/ares_config.h +502 -0
- data/third_party/cares/config_openbsd/ares_config.h +502 -0
- metadata +302 -328
- data/src/core/ext/census/aggregation.h +0 -51
- data/src/core/ext/census/base_resources.c +0 -56
- data/src/core/ext/census/base_resources.h +0 -24
- data/src/core/ext/census/census_interface.h +0 -61
- data/src/core/ext/census/census_rpc_stats.h +0 -86
- data/src/core/ext/census/context.c +0 -496
- data/src/core/ext/census/gen/census.pb.c +0 -161
- data/src/core/ext/census/gen/census.pb.h +0 -280
- data/src/core/ext/census/gen/trace_context.pb.c +0 -39
- data/src/core/ext/census/gen/trace_context.pb.h +0 -78
- data/src/core/ext/census/grpc_filter.c +0 -196
- data/src/core/ext/census/grpc_plugin.c +0 -70
- data/src/core/ext/census/initialize.c +0 -51
- data/src/core/ext/census/intrusive_hash_map.c +0 -305
- data/src/core/ext/census/intrusive_hash_map.h +0 -152
- data/src/core/ext/census/intrusive_hash_map_internal.h +0 -48
- data/src/core/ext/census/mlog.c +0 -586
- data/src/core/ext/census/mlog.h +0 -80
- data/src/core/ext/census/operation.c +0 -48
- data/src/core/ext/census/placeholders.c +0 -49
- data/src/core/ext/census/resource.c +0 -303
- data/src/core/ext/census/resource.h +0 -48
- data/src/core/ext/census/rpc_metric_id.h +0 -36
- data/src/core/ext/census/trace_context.c +0 -71
- data/src/core/ext/census/trace_context.h +0 -56
- data/src/core/ext/census/trace_label.h +0 -46
- data/src/core/ext/census/trace_propagation.h +0 -48
- data/src/core/ext/census/trace_status.h +0 -30
- data/src/core/ext/census/trace_string.h +0 -35
- data/src/core/ext/census/tracing.c +0 -55
- data/src/core/ext/census/tracing.h +0 -109
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +0 -714
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +0 -924
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +0 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.c +0 -502
- data/src/core/ext/transport/chttp2/transport/writing.c +0 -534
- data/src/core/lib/debug/trace.c +0 -146
- data/src/core/lib/iomgr/closure.c +0 -219
- data/src/core/lib/iomgr/ev_epollex_linux.c +0 -1461
- data/src/core/lib/iomgr/ev_posix.c +0 -266
- data/src/core/lib/iomgr/exec_ctx.c +0 -113
- data/src/core/lib/iomgr/tcp_uv.c +0 -381
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +0 -194
- data/src/core/lib/security/transport/security_connector.c +0 -914
- data/src/core/lib/support/backoff.c +0 -72
- data/src/core/lib/support/backoff.h +0 -56
- data/src/core/lib/support/mpscq.c +0 -79
- data/src/core/lib/support/stack_lockfree.c +0 -137
- data/src/core/lib/support/stack_lockfree.h +0 -38
- data/src/core/lib/transport/bdp_estimator.c +0 -110
- data/src/core/lib/transport/pid_controller.c +0 -63
@@ -19,35 +19,44 @@
|
|
19
19
|
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
20
20
|
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H
|
21
21
|
|
22
|
+
#include <ares.h>
|
22
23
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
23
24
|
#include "src/core/lib/iomgr/pollset_set.h"
|
24
25
|
|
26
|
+
#ifdef __cplusplus
|
27
|
+
extern "C" {
|
28
|
+
#endif
|
29
|
+
|
25
30
|
typedef struct grpc_ares_ev_driver grpc_ares_ev_driver;
|
26
31
|
|
27
32
|
/* Start \a ev_driver. It will keep working until all IO on its ares_channel is
|
28
33
|
done, or grpc_ares_ev_driver_destroy() is called. It may notify the callbacks
|
29
34
|
bound to its ares_channel when necessary. */
|
30
|
-
void grpc_ares_ev_driver_start(grpc_exec_ctx
|
31
|
-
grpc_ares_ev_driver
|
35
|
+
void grpc_ares_ev_driver_start(grpc_exec_ctx* exec_ctx,
|
36
|
+
grpc_ares_ev_driver* ev_driver);
|
32
37
|
|
33
38
|
/* Returns the ares_channel owned by \a ev_driver. To bind a c-ares query to
|
34
39
|
\a ev_driver, use the ares_channel owned by \a ev_driver as the arg of the
|
35
40
|
query. */
|
36
|
-
ares_channel
|
41
|
+
ares_channel* grpc_ares_ev_driver_get_channel(grpc_ares_ev_driver* ev_driver);
|
37
42
|
|
38
43
|
/* Creates a new grpc_ares_ev_driver. Returns GRPC_ERROR_NONE if \a ev_driver is
|
39
44
|
created successfully. */
|
40
|
-
grpc_error
|
41
|
-
grpc_pollset_set
|
45
|
+
grpc_error* grpc_ares_ev_driver_create(grpc_ares_ev_driver** ev_driver,
|
46
|
+
grpc_pollset_set* pollset_set);
|
42
47
|
|
43
48
|
/* Destroys \a ev_driver asynchronously. Pending lookups made on \a ev_driver
|
44
49
|
will be cancelled and their on_done callbacks will be invoked with a status
|
45
50
|
of ARES_ECANCELLED. */
|
46
|
-
void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver
|
51
|
+
void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver* ev_driver);
|
47
52
|
|
48
53
|
/* Shutdown all the grpc_fds used by \a ev_driver */
|
49
|
-
void grpc_ares_ev_driver_shutdown(grpc_exec_ctx
|
50
|
-
grpc_ares_ev_driver
|
54
|
+
void grpc_ares_ev_driver_shutdown(grpc_exec_ctx* exec_ctx,
|
55
|
+
grpc_ares_ev_driver* ev_driver);
|
56
|
+
|
57
|
+
#ifdef __cplusplus
|
58
|
+
}
|
59
|
+
#endif
|
51
60
|
|
52
61
|
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_RESOLVER_DNS_C_ARES_GRPC_ARES_EV_DRIVER_H \
|
53
|
-
|
62
|
+
*/
|
@@ -37,7 +37,7 @@
|
|
37
37
|
|
38
38
|
typedef struct fd_node {
|
39
39
|
/** the owner of this fd node */
|
40
|
-
grpc_ares_ev_driver
|
40
|
+
grpc_ares_ev_driver* ev_driver;
|
41
41
|
/** a closure wrapping on_readable_cb, which should be invoked when the
|
42
42
|
grpc_fd in this node becomes readable. */
|
43
43
|
grpc_closure read_closure;
|
@@ -45,12 +45,12 @@ typedef struct fd_node {
|
|
45
45
|
grpc_fd in this node becomes writable. */
|
46
46
|
grpc_closure write_closure;
|
47
47
|
/** next fd node in the list */
|
48
|
-
struct fd_node
|
48
|
+
struct fd_node* next;
|
49
49
|
|
50
50
|
/** mutex guarding the rest of the state */
|
51
51
|
gpr_mu mu;
|
52
52
|
/** the grpc_fd owned by this fd node */
|
53
|
-
grpc_fd
|
53
|
+
grpc_fd* fd;
|
54
54
|
/** if the readable closure has been registered */
|
55
55
|
bool readable_registered;
|
56
56
|
/** if the writable closure has been registered */
|
@@ -63,42 +63,42 @@ struct grpc_ares_ev_driver {
|
|
63
63
|
/** the ares_channel owned by this event driver */
|
64
64
|
ares_channel channel;
|
65
65
|
/** pollset set for driving the IO events of the channel */
|
66
|
-
grpc_pollset_set
|
66
|
+
grpc_pollset_set* pollset_set;
|
67
67
|
/** refcount of the event driver */
|
68
68
|
gpr_refcount refs;
|
69
69
|
|
70
70
|
/** mutex guarding the rest of the state */
|
71
71
|
gpr_mu mu;
|
72
72
|
/** a list of grpc_fd that this event driver is currently using. */
|
73
|
-
fd_node
|
73
|
+
fd_node* fds;
|
74
74
|
/** is this event driver currently working? */
|
75
75
|
bool working;
|
76
76
|
/** is this event driver being shut down */
|
77
77
|
bool shutting_down;
|
78
78
|
};
|
79
79
|
|
80
|
-
static void grpc_ares_notify_on_event_locked(grpc_exec_ctx
|
81
|
-
grpc_ares_ev_driver
|
80
|
+
static void grpc_ares_notify_on_event_locked(grpc_exec_ctx* exec_ctx,
|
81
|
+
grpc_ares_ev_driver* ev_driver);
|
82
82
|
|
83
|
-
static grpc_ares_ev_driver
|
84
|
-
grpc_ares_ev_driver
|
83
|
+
static grpc_ares_ev_driver* grpc_ares_ev_driver_ref(
|
84
|
+
grpc_ares_ev_driver* ev_driver) {
|
85
85
|
gpr_log(GPR_DEBUG, "Ref ev_driver %" PRIuPTR, (uintptr_t)ev_driver);
|
86
86
|
gpr_ref(&ev_driver->refs);
|
87
87
|
return ev_driver;
|
88
88
|
}
|
89
89
|
|
90
|
-
static void grpc_ares_ev_driver_unref(grpc_ares_ev_driver
|
90
|
+
static void grpc_ares_ev_driver_unref(grpc_ares_ev_driver* ev_driver) {
|
91
91
|
gpr_log(GPR_DEBUG, "Unref ev_driver %" PRIuPTR, (uintptr_t)ev_driver);
|
92
92
|
if (gpr_unref(&ev_driver->refs)) {
|
93
93
|
gpr_log(GPR_DEBUG, "destroy ev_driver %" PRIuPTR, (uintptr_t)ev_driver);
|
94
|
-
GPR_ASSERT(ev_driver->fds ==
|
94
|
+
GPR_ASSERT(ev_driver->fds == nullptr);
|
95
95
|
gpr_mu_destroy(&ev_driver->mu);
|
96
96
|
ares_destroy(ev_driver->channel);
|
97
97
|
gpr_free(ev_driver);
|
98
98
|
}
|
99
99
|
}
|
100
100
|
|
101
|
-
static void fd_node_destroy(grpc_exec_ctx
|
101
|
+
static void fd_node_destroy(grpc_exec_ctx* exec_ctx, fd_node* fdn) {
|
102
102
|
gpr_log(GPR_DEBUG, "delete fd: %d", grpc_fd_wrapped_fd(fdn->fd));
|
103
103
|
GPR_ASSERT(!fdn->readable_registered);
|
104
104
|
GPR_ASSERT(!fdn->writable_registered);
|
@@ -106,34 +106,35 @@ static void fd_node_destroy(grpc_exec_ctx *exec_ctx, fd_node *fdn) {
|
|
106
106
|
/* c-ares library has closed the fd inside grpc_fd. This fd may be picked up
|
107
107
|
immediately by another thread, and should not be closed by the following
|
108
108
|
grpc_fd_orphan. */
|
109
|
-
grpc_fd_orphan(exec_ctx, fdn->fd,
|
109
|
+
grpc_fd_orphan(exec_ctx, fdn->fd, nullptr, nullptr, true /* already_closed */,
|
110
110
|
"c-ares query finished");
|
111
111
|
gpr_free(fdn);
|
112
112
|
}
|
113
113
|
|
114
|
-
static void fd_node_shutdown(grpc_exec_ctx
|
114
|
+
static void fd_node_shutdown(grpc_exec_ctx* exec_ctx, fd_node* fdn) {
|
115
115
|
gpr_mu_lock(&fdn->mu);
|
116
116
|
fdn->shutting_down = true;
|
117
117
|
if (!fdn->readable_registered && !fdn->writable_registered) {
|
118
118
|
gpr_mu_unlock(&fdn->mu);
|
119
119
|
fd_node_destroy(exec_ctx, fdn);
|
120
120
|
} else {
|
121
|
-
grpc_fd_shutdown(
|
122
|
-
|
121
|
+
grpc_fd_shutdown(
|
122
|
+
exec_ctx, fdn->fd,
|
123
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("c-ares fd shutdown"));
|
123
124
|
gpr_mu_unlock(&fdn->mu);
|
124
125
|
}
|
125
126
|
}
|
126
127
|
|
127
|
-
grpc_error
|
128
|
-
grpc_pollset_set
|
129
|
-
*ev_driver = (grpc_ares_ev_driver
|
128
|
+
grpc_error* grpc_ares_ev_driver_create(grpc_ares_ev_driver** ev_driver,
|
129
|
+
grpc_pollset_set* pollset_set) {
|
130
|
+
*ev_driver = (grpc_ares_ev_driver*)gpr_malloc(sizeof(grpc_ares_ev_driver));
|
130
131
|
int status = ares_init(&(*ev_driver)->channel);
|
131
132
|
gpr_log(GPR_DEBUG, "grpc_ares_ev_driver_create");
|
132
133
|
if (status != ARES_SUCCESS) {
|
133
|
-
char
|
134
|
+
char* err_msg;
|
134
135
|
gpr_asprintf(&err_msg, "Failed to init ares channel. C-ares error: %s",
|
135
136
|
ares_strerror(status));
|
136
|
-
grpc_error
|
137
|
+
grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(err_msg);
|
137
138
|
gpr_free(err_msg);
|
138
139
|
gpr_free(*ev_driver);
|
139
140
|
return err;
|
@@ -141,13 +142,13 @@ grpc_error *grpc_ares_ev_driver_create(grpc_ares_ev_driver **ev_driver,
|
|
141
142
|
gpr_mu_init(&(*ev_driver)->mu);
|
142
143
|
gpr_ref_init(&(*ev_driver)->refs, 1);
|
143
144
|
(*ev_driver)->pollset_set = pollset_set;
|
144
|
-
(*ev_driver)->fds =
|
145
|
+
(*ev_driver)->fds = nullptr;
|
145
146
|
(*ev_driver)->working = false;
|
146
147
|
(*ev_driver)->shutting_down = false;
|
147
148
|
return GRPC_ERROR_NONE;
|
148
149
|
}
|
149
150
|
|
150
|
-
void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver
|
151
|
+
void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver* ev_driver) {
|
151
152
|
// It's not safe to shut down remaining fds here directly, becauses
|
152
153
|
// ares_host_callback does not provide an exec_ctx. We mark the event driver
|
153
154
|
// as being shut down. If the event driver is working,
|
@@ -159,14 +160,15 @@ void grpc_ares_ev_driver_destroy(grpc_ares_ev_driver *ev_driver) {
|
|
159
160
|
grpc_ares_ev_driver_unref(ev_driver);
|
160
161
|
}
|
161
162
|
|
162
|
-
void grpc_ares_ev_driver_shutdown(grpc_exec_ctx
|
163
|
-
grpc_ares_ev_driver
|
163
|
+
void grpc_ares_ev_driver_shutdown(grpc_exec_ctx* exec_ctx,
|
164
|
+
grpc_ares_ev_driver* ev_driver) {
|
164
165
|
gpr_mu_lock(&ev_driver->mu);
|
165
166
|
ev_driver->shutting_down = true;
|
166
|
-
fd_node
|
167
|
-
while (fn !=
|
168
|
-
grpc_fd_shutdown(
|
169
|
-
|
167
|
+
fd_node* fn = ev_driver->fds;
|
168
|
+
while (fn != nullptr) {
|
169
|
+
grpc_fd_shutdown(
|
170
|
+
exec_ctx, fn->fd,
|
171
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("grpc_ares_ev_driver_shutdown"));
|
170
172
|
fn = fn->next;
|
171
173
|
}
|
172
174
|
gpr_mu_unlock(&ev_driver->mu);
|
@@ -174,33 +176,33 @@ void grpc_ares_ev_driver_shutdown(grpc_exec_ctx *exec_ctx,
|
|
174
176
|
|
175
177
|
// Search fd in the fd_node list head. This is an O(n) search, the max possible
|
176
178
|
// value of n is ARES_GETSOCK_MAXNUM (16). n is typically 1 - 2 in our tests.
|
177
|
-
static fd_node
|
179
|
+
static fd_node* pop_fd_node(fd_node** head, int fd) {
|
178
180
|
fd_node dummy_head;
|
179
181
|
dummy_head.next = *head;
|
180
|
-
fd_node
|
181
|
-
while (node->next !=
|
182
|
+
fd_node* node = &dummy_head;
|
183
|
+
while (node->next != nullptr) {
|
182
184
|
if (grpc_fd_wrapped_fd(node->next->fd) == fd) {
|
183
|
-
fd_node
|
185
|
+
fd_node* ret = node->next;
|
184
186
|
node->next = node->next->next;
|
185
187
|
*head = dummy_head.next;
|
186
188
|
return ret;
|
187
189
|
}
|
188
190
|
node = node->next;
|
189
191
|
}
|
190
|
-
return
|
192
|
+
return nullptr;
|
191
193
|
}
|
192
194
|
|
193
195
|
/* Check if \a fd is still readable */
|
194
|
-
static bool grpc_ares_is_fd_still_readable(grpc_ares_ev_driver
|
196
|
+
static bool grpc_ares_is_fd_still_readable(grpc_ares_ev_driver* ev_driver,
|
195
197
|
int fd) {
|
196
198
|
size_t bytes_available = 0;
|
197
199
|
return ioctl(fd, FIONREAD, &bytes_available) == 0 && bytes_available > 0;
|
198
200
|
}
|
199
201
|
|
200
|
-
static void on_readable_cb(grpc_exec_ctx
|
201
|
-
grpc_error
|
202
|
-
fd_node
|
203
|
-
grpc_ares_ev_driver
|
202
|
+
static void on_readable_cb(grpc_exec_ctx* exec_ctx, void* arg,
|
203
|
+
grpc_error* error) {
|
204
|
+
fd_node* fdn = (fd_node*)arg;
|
205
|
+
grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
|
204
206
|
gpr_mu_lock(&fdn->mu);
|
205
207
|
const int fd = grpc_fd_wrapped_fd(fdn->fd);
|
206
208
|
fdn->readable_registered = false;
|
@@ -232,10 +234,10 @@ static void on_readable_cb(grpc_exec_ctx *exec_ctx, void *arg,
|
|
232
234
|
grpc_ares_ev_driver_unref(ev_driver);
|
233
235
|
}
|
234
236
|
|
235
|
-
static void on_writable_cb(grpc_exec_ctx
|
236
|
-
grpc_error
|
237
|
-
fd_node
|
238
|
-
grpc_ares_ev_driver
|
237
|
+
static void on_writable_cb(grpc_exec_ctx* exec_ctx, void* arg,
|
238
|
+
grpc_error* error) {
|
239
|
+
fd_node* fdn = (fd_node*)arg;
|
240
|
+
grpc_ares_ev_driver* ev_driver = fdn->ev_driver;
|
239
241
|
gpr_mu_lock(&fdn->mu);
|
240
242
|
const int fd = grpc_fd_wrapped_fd(fdn->fd);
|
241
243
|
fdn->writable_registered = false;
|
@@ -265,15 +267,15 @@ static void on_writable_cb(grpc_exec_ctx *exec_ctx, void *arg,
|
|
265
267
|
grpc_ares_ev_driver_unref(ev_driver);
|
266
268
|
}
|
267
269
|
|
268
|
-
ares_channel
|
270
|
+
ares_channel* grpc_ares_ev_driver_get_channel(grpc_ares_ev_driver* ev_driver) {
|
269
271
|
return &ev_driver->channel;
|
270
272
|
}
|
271
273
|
|
272
274
|
// Get the file descriptors used by the ev_driver's ares channel, register
|
273
275
|
// driver_closure with these filedescriptors.
|
274
|
-
static void grpc_ares_notify_on_event_locked(grpc_exec_ctx
|
275
|
-
grpc_ares_ev_driver
|
276
|
-
fd_node
|
276
|
+
static void grpc_ares_notify_on_event_locked(grpc_exec_ctx* exec_ctx,
|
277
|
+
grpc_ares_ev_driver* ev_driver) {
|
278
|
+
fd_node* new_list = nullptr;
|
277
279
|
if (!ev_driver->shutting_down) {
|
278
280
|
ares_socket_t socks[ARES_GETSOCK_MAXNUM];
|
279
281
|
int socks_bitmask =
|
@@ -281,12 +283,12 @@ static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx,
|
|
281
283
|
for (size_t i = 0; i < ARES_GETSOCK_MAXNUM; i++) {
|
282
284
|
if (ARES_GETSOCK_READABLE(socks_bitmask, i) ||
|
283
285
|
ARES_GETSOCK_WRITABLE(socks_bitmask, i)) {
|
284
|
-
fd_node
|
286
|
+
fd_node* fdn = pop_fd_node(&ev_driver->fds, socks[i]);
|
285
287
|
// Create a new fd_node if sock[i] is not in the fd_node list.
|
286
|
-
if (fdn ==
|
287
|
-
char
|
288
|
+
if (fdn == nullptr) {
|
289
|
+
char* fd_name;
|
288
290
|
gpr_asprintf(&fd_name, "ares_ev_driver-%" PRIuPTR, i);
|
289
|
-
fdn = (fd_node
|
291
|
+
fdn = (fd_node*)gpr_malloc(sizeof(fd_node));
|
290
292
|
gpr_log(GPR_DEBUG, "new fd: %d", socks[i]);
|
291
293
|
fdn->fd = grpc_fd_create(socks[i], fd_name);
|
292
294
|
fdn->ev_driver = ev_driver;
|
@@ -330,21 +332,21 @@ static void grpc_ares_notify_on_event_locked(grpc_exec_ctx *exec_ctx,
|
|
330
332
|
// Any remaining fds in ev_driver->fds were not returned by ares_getsock() and
|
331
333
|
// are therefore no longer in use, so they can be shut down and removed from
|
332
334
|
// the list.
|
333
|
-
while (ev_driver->fds !=
|
334
|
-
fd_node
|
335
|
+
while (ev_driver->fds != nullptr) {
|
336
|
+
fd_node* cur = ev_driver->fds;
|
335
337
|
ev_driver->fds = ev_driver->fds->next;
|
336
338
|
fd_node_shutdown(exec_ctx, cur);
|
337
339
|
}
|
338
340
|
ev_driver->fds = new_list;
|
339
341
|
// If the ev driver has no working fd, all the tasks are done.
|
340
|
-
if (new_list ==
|
342
|
+
if (new_list == nullptr) {
|
341
343
|
ev_driver->working = false;
|
342
344
|
gpr_log(GPR_DEBUG, "ev driver stop working");
|
343
345
|
}
|
344
346
|
}
|
345
347
|
|
346
|
-
void grpc_ares_ev_driver_start(grpc_exec_ctx
|
347
|
-
grpc_ares_ev_driver
|
348
|
+
void grpc_ares_ev_driver_start(grpc_exec_ctx* exec_ctx,
|
349
|
+
grpc_ares_ev_driver* ev_driver) {
|
348
350
|
gpr_mu_lock(&ev_driver->mu);
|
349
351
|
if (!ev_driver->working) {
|
350
352
|
ev_driver->working = true;
|
@@ -51,13 +51,13 @@ struct grpc_ares_request {
|
|
51
51
|
struct ares_addr_port_node dns_server_addr;
|
52
52
|
/** following members are set in grpc_resolve_address_ares_impl */
|
53
53
|
/** closure to call when the request completes */
|
54
|
-
grpc_closure
|
54
|
+
grpc_closure* on_done;
|
55
55
|
/** the pointer to receive the resolved addresses */
|
56
|
-
grpc_lb_addresses
|
56
|
+
grpc_lb_addresses** lb_addrs_out;
|
57
57
|
/** the pointer to receive the service config in JSON */
|
58
|
-
char
|
58
|
+
char** service_config_json_out;
|
59
59
|
/** the evernt driver used by this request */
|
60
|
-
grpc_ares_ev_driver
|
60
|
+
grpc_ares_ev_driver* ev_driver;
|
61
61
|
/** number of ongoing queries */
|
62
62
|
gpr_refcount pending_queries;
|
63
63
|
|
@@ -66,15 +66,15 @@ struct grpc_ares_request {
|
|
66
66
|
/** is there at least one successful query, set in on_done_cb */
|
67
67
|
bool success;
|
68
68
|
/** the errors explaining the request failure, set in on_done_cb */
|
69
|
-
grpc_error
|
69
|
+
grpc_error* error;
|
70
70
|
};
|
71
71
|
|
72
72
|
typedef struct grpc_ares_hostbyname_request {
|
73
73
|
/** following members are set in create_hostbyname_request */
|
74
74
|
/** the top-level request instance */
|
75
|
-
grpc_ares_request
|
75
|
+
grpc_ares_request* parent_request;
|
76
76
|
/** host to resolve, parsed from the name to resolve */
|
77
|
-
char
|
77
|
+
char* host;
|
78
78
|
/** port to fill in sockaddr_in, parsed from the name to resolve */
|
79
79
|
uint16_t port;
|
80
80
|
/** is it a grpclb address */
|
@@ -83,7 +83,7 @@ typedef struct grpc_ares_hostbyname_request {
|
|
83
83
|
|
84
84
|
static void do_basic_init(void) { gpr_mu_init(&g_init_mu); }
|
85
85
|
|
86
|
-
static uint16_t strhtons(const char
|
86
|
+
static uint16_t strhtons(const char* port) {
|
87
87
|
if (strcmp(port, "http") == 0) {
|
88
88
|
return htons(80);
|
89
89
|
} else if (strcmp(port, "https") == 0) {
|
@@ -92,17 +92,17 @@ static uint16_t strhtons(const char *port) {
|
|
92
92
|
return htons((unsigned short)atoi(port));
|
93
93
|
}
|
94
94
|
|
95
|
-
static void grpc_ares_request_ref(grpc_ares_request
|
95
|
+
static void grpc_ares_request_ref(grpc_ares_request* r) {
|
96
96
|
gpr_ref(&r->pending_queries);
|
97
97
|
}
|
98
98
|
|
99
|
-
static void grpc_ares_request_unref(grpc_exec_ctx
|
100
|
-
grpc_ares_request
|
99
|
+
static void grpc_ares_request_unref(grpc_exec_ctx* exec_ctx,
|
100
|
+
grpc_ares_request* r) {
|
101
101
|
/* If there are no pending queries, invoke on_done callback and destroy the
|
102
102
|
request */
|
103
103
|
if (gpr_unref(&r->pending_queries)) {
|
104
104
|
/* TODO(zyc): Sort results with RFC6724 before invoking on_done. */
|
105
|
-
if (exec_ctx ==
|
105
|
+
if (exec_ctx == nullptr) {
|
106
106
|
/* A new exec_ctx is created here, as the c-ares interface does not
|
107
107
|
provide one in ares_host_callback. It's safe to schedule on_done with
|
108
108
|
the newly created exec_ctx, since the caller has been warned not to
|
@@ -120,10 +120,10 @@ static void grpc_ares_request_unref(grpc_exec_ctx *exec_ctx,
|
|
120
120
|
}
|
121
121
|
}
|
122
122
|
|
123
|
-
static grpc_ares_hostbyname_request
|
124
|
-
grpc_ares_request
|
123
|
+
static grpc_ares_hostbyname_request* create_hostbyname_request(
|
124
|
+
grpc_ares_request* parent_request, char* host, uint16_t port,
|
125
125
|
bool is_balancer) {
|
126
|
-
grpc_ares_hostbyname_request
|
126
|
+
grpc_ares_hostbyname_request* hr = (grpc_ares_hostbyname_request*)gpr_zalloc(
|
127
127
|
sizeof(grpc_ares_hostbyname_request));
|
128
128
|
hr->parent_request = parent_request;
|
129
129
|
hr->host = gpr_strdup(host);
|
@@ -133,32 +133,32 @@ static grpc_ares_hostbyname_request *create_hostbyname_request(
|
|
133
133
|
return hr;
|
134
134
|
}
|
135
135
|
|
136
|
-
static void destroy_hostbyname_request(grpc_exec_ctx
|
137
|
-
grpc_ares_hostbyname_request
|
136
|
+
static void destroy_hostbyname_request(grpc_exec_ctx* exec_ctx,
|
137
|
+
grpc_ares_hostbyname_request* hr) {
|
138
138
|
grpc_ares_request_unref(exec_ctx, hr->parent_request);
|
139
139
|
gpr_free(hr->host);
|
140
140
|
gpr_free(hr);
|
141
141
|
}
|
142
142
|
|
143
|
-
static void on_hostbyname_done_cb(void
|
144
|
-
struct hostent
|
145
|
-
grpc_ares_hostbyname_request
|
146
|
-
grpc_ares_request
|
143
|
+
static void on_hostbyname_done_cb(void* arg, int status, int timeouts,
|
144
|
+
struct hostent* hostent) {
|
145
|
+
grpc_ares_hostbyname_request* hr = (grpc_ares_hostbyname_request*)arg;
|
146
|
+
grpc_ares_request* r = hr->parent_request;
|
147
147
|
gpr_mu_lock(&r->mu);
|
148
148
|
if (status == ARES_SUCCESS) {
|
149
149
|
GRPC_ERROR_UNREF(r->error);
|
150
150
|
r->error = GRPC_ERROR_NONE;
|
151
151
|
r->success = true;
|
152
|
-
grpc_lb_addresses
|
153
|
-
if (*lb_addresses ==
|
154
|
-
*lb_addresses = grpc_lb_addresses_create(0,
|
152
|
+
grpc_lb_addresses** lb_addresses = r->lb_addrs_out;
|
153
|
+
if (*lb_addresses == nullptr) {
|
154
|
+
*lb_addresses = grpc_lb_addresses_create(0, nullptr);
|
155
155
|
}
|
156
156
|
size_t prev_naddr = (*lb_addresses)->num_addresses;
|
157
157
|
size_t i;
|
158
|
-
for (i = 0; hostent->h_addr_list[i] !=
|
158
|
+
for (i = 0; hostent->h_addr_list[i] != nullptr; i++) {
|
159
159
|
}
|
160
160
|
(*lb_addresses)->num_addresses += i;
|
161
|
-
(*lb_addresses)->addresses = (grpc_lb_address
|
161
|
+
(*lb_addresses)->addresses = (grpc_lb_address*)gpr_realloc(
|
162
162
|
(*lb_addresses)->addresses,
|
163
163
|
sizeof(grpc_lb_address) * (*lb_addresses)->num_addresses);
|
164
164
|
for (i = prev_naddr; i < (*lb_addresses)->num_addresses; i++) {
|
@@ -174,8 +174,8 @@ static void on_hostbyname_done_cb(void *arg, int status, int timeouts,
|
|
174
174
|
grpc_lb_addresses_set_address(
|
175
175
|
*lb_addresses, i, &addr, addr_len,
|
176
176
|
hr->is_balancer /* is_balancer */,
|
177
|
-
hr->is_balancer ? hr->host :
|
178
|
-
|
177
|
+
hr->is_balancer ? hr->host : nullptr /* balancer_name */,
|
178
|
+
nullptr /* user_data */);
|
179
179
|
char output[INET6_ADDRSTRLEN];
|
180
180
|
ares_inet_ntop(AF_INET6, &addr.sin6_addr, output, INET6_ADDRSTRLEN);
|
181
181
|
gpr_log(GPR_DEBUG,
|
@@ -195,8 +195,8 @@ static void on_hostbyname_done_cb(void *arg, int status, int timeouts,
|
|
195
195
|
grpc_lb_addresses_set_address(
|
196
196
|
*lb_addresses, i, &addr, addr_len,
|
197
197
|
hr->is_balancer /* is_balancer */,
|
198
|
-
hr->is_balancer ? hr->host :
|
199
|
-
|
198
|
+
hr->is_balancer ? hr->host : nullptr /* balancer_name */,
|
199
|
+
nullptr /* user_data */);
|
200
200
|
char output[INET_ADDRSTRLEN];
|
201
201
|
ares_inet_ntop(AF_INET, &addr.sin_addr, output, INET_ADDRSTRLEN);
|
202
202
|
gpr_log(GPR_DEBUG,
|
@@ -208,10 +208,10 @@ static void on_hostbyname_done_cb(void *arg, int status, int timeouts,
|
|
208
208
|
}
|
209
209
|
}
|
210
210
|
} else if (!r->success) {
|
211
|
-
char
|
211
|
+
char* error_msg;
|
212
212
|
gpr_asprintf(&error_msg, "C-ares status is not ARES_SUCCESS: %s",
|
213
213
|
ares_strerror(status));
|
214
|
-
grpc_error
|
214
|
+
grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
|
215
215
|
gpr_free(error_msg);
|
216
216
|
if (r->error == GRPC_ERROR_NONE) {
|
217
217
|
r->error = error;
|
@@ -220,43 +220,43 @@ static void on_hostbyname_done_cb(void *arg, int status, int timeouts,
|
|
220
220
|
}
|
221
221
|
}
|
222
222
|
gpr_mu_unlock(&r->mu);
|
223
|
-
destroy_hostbyname_request(
|
223
|
+
destroy_hostbyname_request(nullptr, hr);
|
224
224
|
}
|
225
225
|
|
226
|
-
static void on_srv_query_done_cb(void
|
227
|
-
unsigned char
|
228
|
-
grpc_ares_request
|
226
|
+
static void on_srv_query_done_cb(void* arg, int status, int timeouts,
|
227
|
+
unsigned char* abuf, int alen) {
|
228
|
+
grpc_ares_request* r = (grpc_ares_request*)arg;
|
229
229
|
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
230
230
|
gpr_log(GPR_DEBUG, "on_query_srv_done_cb");
|
231
231
|
if (status == ARES_SUCCESS) {
|
232
232
|
gpr_log(GPR_DEBUG, "on_query_srv_done_cb ARES_SUCCESS");
|
233
|
-
struct ares_srv_reply
|
233
|
+
struct ares_srv_reply* reply;
|
234
234
|
const int parse_status = ares_parse_srv_reply(abuf, alen, &reply);
|
235
235
|
if (parse_status == ARES_SUCCESS) {
|
236
|
-
ares_channel
|
237
|
-
for (struct ares_srv_reply
|
236
|
+
ares_channel* channel = grpc_ares_ev_driver_get_channel(r->ev_driver);
|
237
|
+
for (struct ares_srv_reply* srv_it = reply; srv_it != nullptr;
|
238
238
|
srv_it = srv_it->next) {
|
239
239
|
if (grpc_ipv6_loopback_available()) {
|
240
|
-
grpc_ares_hostbyname_request
|
240
|
+
grpc_ares_hostbyname_request* hr = create_hostbyname_request(
|
241
241
|
r, srv_it->host, htons(srv_it->port), true /* is_balancer */);
|
242
242
|
ares_gethostbyname(*channel, hr->host, AF_INET6,
|
243
243
|
on_hostbyname_done_cb, hr);
|
244
244
|
}
|
245
|
-
grpc_ares_hostbyname_request
|
245
|
+
grpc_ares_hostbyname_request* hr = create_hostbyname_request(
|
246
246
|
r, srv_it->host, htons(srv_it->port), true /* is_balancer */);
|
247
247
|
ares_gethostbyname(*channel, hr->host, AF_INET, on_hostbyname_done_cb,
|
248
248
|
hr);
|
249
249
|
grpc_ares_ev_driver_start(&exec_ctx, r->ev_driver);
|
250
250
|
}
|
251
251
|
}
|
252
|
-
if (reply !=
|
252
|
+
if (reply != nullptr) {
|
253
253
|
ares_free_data(reply);
|
254
254
|
}
|
255
255
|
} else if (!r->success) {
|
256
|
-
char
|
256
|
+
char* error_msg;
|
257
257
|
gpr_asprintf(&error_msg, "C-ares status is not ARES_SUCCESS: %s",
|
258
258
|
ares_strerror(status));
|
259
|
-
grpc_error
|
259
|
+
grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
|
260
260
|
gpr_free(error_msg);
|
261
261
|
if (r->error == GRPC_ERROR_NONE) {
|
262
262
|
r->error = error;
|
@@ -270,21 +270,21 @@ static void on_srv_query_done_cb(void *arg, int status, int timeouts,
|
|
270
270
|
|
271
271
|
static const char g_service_config_attribute_prefix[] = "grpc_config=";
|
272
272
|
|
273
|
-
static void on_txt_done_cb(void
|
274
|
-
unsigned char
|
273
|
+
static void on_txt_done_cb(void* arg, int status, int timeouts,
|
274
|
+
unsigned char* buf, int len) {
|
275
275
|
gpr_log(GPR_DEBUG, "on_txt_done_cb");
|
276
|
-
char
|
277
|
-
grpc_ares_request
|
276
|
+
char* error_msg;
|
277
|
+
grpc_ares_request* r = (grpc_ares_request*)arg;
|
278
278
|
const size_t prefix_len = sizeof(g_service_config_attribute_prefix) - 1;
|
279
|
-
struct ares_txt_ext
|
280
|
-
struct ares_txt_ext
|
281
|
-
grpc_error
|
279
|
+
struct ares_txt_ext* result = nullptr;
|
280
|
+
struct ares_txt_ext* reply = nullptr;
|
281
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
282
282
|
gpr_mu_lock(&r->mu);
|
283
283
|
if (status != ARES_SUCCESS) goto fail;
|
284
284
|
status = ares_parse_txt_reply_ext(buf, len, &reply);
|
285
285
|
if (status != ARES_SUCCESS) goto fail;
|
286
286
|
// Find service config in TXT record.
|
287
|
-
for (result = reply; result !=
|
287
|
+
for (result = reply; result != nullptr; result = result->next) {
|
288
288
|
if (result->record_start &&
|
289
289
|
memcmp(result->txt, g_service_config_attribute_prefix, prefix_len) ==
|
290
290
|
0) {
|
@@ -292,14 +292,14 @@ static void on_txt_done_cb(void *arg, int status, int timeouts,
|
|
292
292
|
}
|
293
293
|
}
|
294
294
|
// Found a service config record.
|
295
|
-
if (result !=
|
295
|
+
if (result != nullptr) {
|
296
296
|
size_t service_config_len = result->length - prefix_len;
|
297
|
-
*r->service_config_json_out = (char
|
297
|
+
*r->service_config_json_out = (char*)gpr_malloc(service_config_len + 1);
|
298
298
|
memcpy(*r->service_config_json_out, result->txt + prefix_len,
|
299
299
|
service_config_len);
|
300
|
-
for (result = result->next; result !=
|
300
|
+
for (result = result->next; result != nullptr && !result->record_start;
|
301
301
|
result = result->next) {
|
302
|
-
*r->service_config_json_out = (char
|
302
|
+
*r->service_config_json_out = (char*)gpr_realloc(
|
303
303
|
*r->service_config_json_out, service_config_len + result->length + 1);
|
304
304
|
memcpy(*r->service_config_json_out + service_config_len, result->txt,
|
305
305
|
result->length);
|
@@ -323,18 +323,18 @@ fail:
|
|
323
323
|
}
|
324
324
|
done:
|
325
325
|
gpr_mu_unlock(&r->mu);
|
326
|
-
grpc_ares_request_unref(
|
326
|
+
grpc_ares_request_unref(nullptr, r);
|
327
327
|
}
|
328
328
|
|
329
|
-
static grpc_ares_request
|
330
|
-
grpc_exec_ctx
|
331
|
-
const char
|
332
|
-
grpc_closure
|
333
|
-
char
|
334
|
-
grpc_error
|
335
|
-
grpc_ares_hostbyname_request
|
336
|
-
grpc_ares_request
|
337
|
-
ares_channel
|
329
|
+
static grpc_ares_request* grpc_dns_lookup_ares_impl(
|
330
|
+
grpc_exec_ctx* exec_ctx, const char* dns_server, const char* name,
|
331
|
+
const char* default_port, grpc_pollset_set* interested_parties,
|
332
|
+
grpc_closure* on_done, grpc_lb_addresses** addrs, bool check_grpclb,
|
333
|
+
char** service_config_json) {
|
334
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
335
|
+
grpc_ares_hostbyname_request* hr = nullptr;
|
336
|
+
grpc_ares_request* r = nullptr;
|
337
|
+
ares_channel* channel = nullptr;
|
338
338
|
/* TODO(zyc): Enable tracing after #9603 is checked in */
|
339
339
|
/* if (grpc_dns_trace) {
|
340
340
|
gpr_log(GPR_DEBUG, "resolve_address (blocking): name=%s, default_port=%s",
|
@@ -342,16 +342,16 @@ static grpc_ares_request *grpc_dns_lookup_ares_impl(
|
|
342
342
|
} */
|
343
343
|
|
344
344
|
/* parse name, splitting it into host and port parts */
|
345
|
-
char
|
346
|
-
char
|
345
|
+
char* host;
|
346
|
+
char* port;
|
347
347
|
gpr_split_host_port(name, &host, &port);
|
348
|
-
if (host ==
|
348
|
+
if (host == nullptr) {
|
349
349
|
error = grpc_error_set_str(
|
350
350
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
|
351
351
|
GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
|
352
352
|
goto error_cleanup;
|
353
|
-
} else if (port ==
|
354
|
-
if (default_port ==
|
353
|
+
} else if (port == nullptr) {
|
354
|
+
if (default_port == nullptr) {
|
355
355
|
error = grpc_error_set_str(
|
356
356
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
|
357
357
|
GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
|
@@ -360,11 +360,11 @@ static grpc_ares_request *grpc_dns_lookup_ares_impl(
|
|
360
360
|
port = gpr_strdup(default_port);
|
361
361
|
}
|
362
362
|
|
363
|
-
grpc_ares_ev_driver
|
363
|
+
grpc_ares_ev_driver* ev_driver;
|
364
364
|
error = grpc_ares_ev_driver_create(&ev_driver, interested_parties);
|
365
365
|
if (error != GRPC_ERROR_NONE) goto error_cleanup;
|
366
366
|
|
367
|
-
r = (grpc_ares_request
|
367
|
+
r = (grpc_ares_request*)gpr_zalloc(sizeof(grpc_ares_request));
|
368
368
|
gpr_mu_init(&r->mu);
|
369
369
|
r->ev_driver = ev_driver;
|
370
370
|
r->on_done = on_done;
|
@@ -375,12 +375,12 @@ static grpc_ares_request *grpc_dns_lookup_ares_impl(
|
|
375
375
|
channel = grpc_ares_ev_driver_get_channel(r->ev_driver);
|
376
376
|
|
377
377
|
// If dns_server is specified, use it.
|
378
|
-
if (dns_server !=
|
378
|
+
if (dns_server != nullptr) {
|
379
379
|
gpr_log(GPR_INFO, "Using DNS server %s", dns_server);
|
380
380
|
grpc_resolved_address addr;
|
381
381
|
if (grpc_parse_ipv4_hostport(dns_server, &addr, false /* log_errors */)) {
|
382
382
|
r->dns_server_addr.family = AF_INET;
|
383
|
-
struct sockaddr_in
|
383
|
+
struct sockaddr_in* in = (struct sockaddr_in*)addr.addr;
|
384
384
|
memcpy(&r->dns_server_addr.addr.addr4, &in->sin_addr,
|
385
385
|
sizeof(struct in_addr));
|
386
386
|
r->dns_server_addr.tcp_port = grpc_sockaddr_get_port(&addr);
|
@@ -388,7 +388,7 @@ static grpc_ares_request *grpc_dns_lookup_ares_impl(
|
|
388
388
|
} else if (grpc_parse_ipv6_hostport(dns_server, &addr,
|
389
389
|
false /* log_errors */)) {
|
390
390
|
r->dns_server_addr.family = AF_INET6;
|
391
|
-
struct sockaddr_in6
|
391
|
+
struct sockaddr_in6* in6 = (struct sockaddr_in6*)addr.addr;
|
392
392
|
memcpy(&r->dns_server_addr.addr.addr6, &in6->sin6_addr,
|
393
393
|
sizeof(struct in6_addr));
|
394
394
|
r->dns_server_addr.tcp_port = grpc_sockaddr_get_port(&addr);
|
@@ -402,7 +402,7 @@ static grpc_ares_request *grpc_dns_lookup_ares_impl(
|
|
402
402
|
}
|
403
403
|
int status = ares_set_servers_ports(*channel, &r->dns_server_addr);
|
404
404
|
if (status != ARES_SUCCESS) {
|
405
|
-
char
|
405
|
+
char* error_msg;
|
406
406
|
gpr_asprintf(&error_msg, "C-ares status is not ARES_SUCCESS: %s",
|
407
407
|
ares_strerror(status));
|
408
408
|
error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
|
@@ -423,15 +423,18 @@ static grpc_ares_request *grpc_dns_lookup_ares_impl(
|
|
423
423
|
if (check_grpclb) {
|
424
424
|
/* Query the SRV record */
|
425
425
|
grpc_ares_request_ref(r);
|
426
|
-
char
|
426
|
+
char* service_name;
|
427
427
|
gpr_asprintf(&service_name, "_grpclb._tcp.%s", host);
|
428
428
|
ares_query(*channel, service_name, ns_c_in, ns_t_srv, on_srv_query_done_cb,
|
429
429
|
r);
|
430
430
|
gpr_free(service_name);
|
431
431
|
}
|
432
|
-
if (service_config_json !=
|
432
|
+
if (service_config_json != nullptr) {
|
433
433
|
grpc_ares_request_ref(r);
|
434
|
-
|
434
|
+
char* config_name;
|
435
|
+
gpr_asprintf(&config_name, "_grpc_config.%s", host);
|
436
|
+
ares_search(*channel, config_name, ns_c_in, ns_t_txt, on_txt_done_cb, r);
|
437
|
+
gpr_free(config_name);
|
435
438
|
}
|
436
439
|
/* TODO(zyc): Handle CNAME records here. */
|
437
440
|
grpc_ares_ev_driver_start(exec_ctx, r->ev_driver);
|
@@ -444,32 +447,32 @@ error_cleanup:
|
|
444
447
|
GRPC_CLOSURE_SCHED(exec_ctx, on_done, error);
|
445
448
|
gpr_free(host);
|
446
449
|
gpr_free(port);
|
447
|
-
return
|
450
|
+
return nullptr;
|
448
451
|
}
|
449
452
|
|
450
|
-
grpc_ares_request
|
451
|
-
grpc_exec_ctx
|
452
|
-
const char
|
453
|
-
grpc_closure
|
454
|
-
char
|
453
|
+
grpc_ares_request* (*grpc_dns_lookup_ares)(
|
454
|
+
grpc_exec_ctx* exec_ctx, const char* dns_server, const char* name,
|
455
|
+
const char* default_port, grpc_pollset_set* interested_parties,
|
456
|
+
grpc_closure* on_done, grpc_lb_addresses** addrs, bool check_grpclb,
|
457
|
+
char** service_config_json) = grpc_dns_lookup_ares_impl;
|
455
458
|
|
456
|
-
void grpc_cancel_ares_request(grpc_exec_ctx
|
459
|
+
void grpc_cancel_ares_request(grpc_exec_ctx* exec_ctx, grpc_ares_request* r) {
|
457
460
|
if (grpc_dns_lookup_ares == grpc_dns_lookup_ares_impl) {
|
458
461
|
grpc_ares_ev_driver_shutdown(exec_ctx, r->ev_driver);
|
459
462
|
}
|
460
463
|
}
|
461
464
|
|
462
|
-
grpc_error
|
465
|
+
grpc_error* grpc_ares_init(void) {
|
463
466
|
gpr_once_init(&g_basic_init, do_basic_init);
|
464
467
|
gpr_mu_lock(&g_init_mu);
|
465
468
|
int status = ares_library_init(ARES_LIB_INIT_ALL);
|
466
469
|
gpr_mu_unlock(&g_init_mu);
|
467
470
|
|
468
471
|
if (status != ARES_SUCCESS) {
|
469
|
-
char
|
472
|
+
char* error_msg;
|
470
473
|
gpr_asprintf(&error_msg, "ares_library_init failed: %s",
|
471
474
|
ares_strerror(status));
|
472
|
-
grpc_error
|
475
|
+
grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(error_msg);
|
473
476
|
gpr_free(error_msg);
|
474
477
|
return error;
|
475
478
|
}
|
@@ -488,28 +491,28 @@ void grpc_ares_cleanup(void) {
|
|
488
491
|
|
489
492
|
typedef struct grpc_resolve_address_ares_request {
|
490
493
|
/** the pointer to receive the resolved addresses */
|
491
|
-
grpc_resolved_addresses
|
494
|
+
grpc_resolved_addresses** addrs_out;
|
492
495
|
/** currently resolving lb addresses */
|
493
|
-
grpc_lb_addresses
|
496
|
+
grpc_lb_addresses* lb_addrs;
|
494
497
|
/** closure to call when the resolve_address_ares request completes */
|
495
|
-
grpc_closure
|
498
|
+
grpc_closure* on_resolve_address_done;
|
496
499
|
/** a closure wrapping on_dns_lookup_done_cb, which should be invoked when the
|
497
500
|
grpc_dns_lookup_ares operation is done. */
|
498
501
|
grpc_closure on_dns_lookup_done;
|
499
502
|
} grpc_resolve_address_ares_request;
|
500
503
|
|
501
|
-
static void on_dns_lookup_done_cb(grpc_exec_ctx
|
502
|
-
grpc_error
|
503
|
-
grpc_resolve_address_ares_request
|
504
|
-
(grpc_resolve_address_ares_request
|
505
|
-
grpc_resolved_addresses
|
506
|
-
if (r->lb_addrs ==
|
507
|
-
*resolved_addresses =
|
504
|
+
static void on_dns_lookup_done_cb(grpc_exec_ctx* exec_ctx, void* arg,
|
505
|
+
grpc_error* error) {
|
506
|
+
grpc_resolve_address_ares_request* r =
|
507
|
+
(grpc_resolve_address_ares_request*)arg;
|
508
|
+
grpc_resolved_addresses** resolved_addresses = r->addrs_out;
|
509
|
+
if (r->lb_addrs == nullptr || r->lb_addrs->num_addresses == 0) {
|
510
|
+
*resolved_addresses = nullptr;
|
508
511
|
} else {
|
509
512
|
*resolved_addresses =
|
510
|
-
(grpc_resolved_addresses
|
513
|
+
(grpc_resolved_addresses*)gpr_zalloc(sizeof(grpc_resolved_addresses));
|
511
514
|
(*resolved_addresses)->naddrs = r->lb_addrs->num_addresses;
|
512
|
-
(*resolved_addresses)->addrs = (grpc_resolved_address
|
515
|
+
(*resolved_addresses)->addrs = (grpc_resolved_address*)gpr_zalloc(
|
513
516
|
sizeof(grpc_resolved_address) * (*resolved_addresses)->naddrs);
|
514
517
|
for (size_t i = 0; i < (*resolved_addresses)->naddrs; i++) {
|
515
518
|
GPR_ASSERT(!r->lb_addrs->addresses[i].is_balancer);
|
@@ -523,28 +526,28 @@ static void on_dns_lookup_done_cb(grpc_exec_ctx *exec_ctx, void *arg,
|
|
523
526
|
gpr_free(r);
|
524
527
|
}
|
525
528
|
|
526
|
-
static void grpc_resolve_address_ares_impl(grpc_exec_ctx
|
527
|
-
const char
|
528
|
-
const char
|
529
|
-
grpc_pollset_set
|
530
|
-
grpc_closure
|
531
|
-
grpc_resolved_addresses
|
532
|
-
grpc_resolve_address_ares_request
|
533
|
-
(grpc_resolve_address_ares_request
|
529
|
+
static void grpc_resolve_address_ares_impl(grpc_exec_ctx* exec_ctx,
|
530
|
+
const char* name,
|
531
|
+
const char* default_port,
|
532
|
+
grpc_pollset_set* interested_parties,
|
533
|
+
grpc_closure* on_done,
|
534
|
+
grpc_resolved_addresses** addrs) {
|
535
|
+
grpc_resolve_address_ares_request* r =
|
536
|
+
(grpc_resolve_address_ares_request*)gpr_zalloc(
|
534
537
|
sizeof(grpc_resolve_address_ares_request));
|
535
538
|
r->addrs_out = addrs;
|
536
539
|
r->on_resolve_address_done = on_done;
|
537
540
|
GRPC_CLOSURE_INIT(&r->on_dns_lookup_done, on_dns_lookup_done_cb, r,
|
538
541
|
grpc_schedule_on_exec_ctx);
|
539
|
-
grpc_dns_lookup_ares(exec_ctx,
|
542
|
+
grpc_dns_lookup_ares(exec_ctx, nullptr /* dns_server */, name, default_port,
|
540
543
|
interested_parties, &r->on_dns_lookup_done, &r->lb_addrs,
|
541
544
|
false /* check_grpclb */,
|
542
|
-
|
545
|
+
nullptr /* service_config_json */);
|
543
546
|
}
|
544
547
|
|
545
548
|
void (*grpc_resolve_address_ares)(
|
546
|
-
grpc_exec_ctx
|
547
|
-
grpc_pollset_set
|
548
|
-
grpc_resolved_addresses
|
549
|
+
grpc_exec_ctx* exec_ctx, const char* name, const char* default_port,
|
550
|
+
grpc_pollset_set* interested_parties, grpc_closure* on_done,
|
551
|
+
grpc_resolved_addresses** addrs) = grpc_resolve_address_ares_impl;
|
549
552
|
|
550
553
|
#endif /* GRPC_ARES == 1 && !defined(GRPC_UV) */
|