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
@@ -0,0 +1,270 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2015 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#include <string.h>
|
20
|
+
|
21
|
+
#include <grpc/support/alloc.h>
|
22
|
+
|
23
|
+
#include "src/core/ext/filters/client_channel/lb_policy/subchannel_list.h"
|
24
|
+
#include "src/core/lib/channel/channel_args.h"
|
25
|
+
#include "src/core/lib/debug/trace.h"
|
26
|
+
#include "src/core/lib/iomgr/closure.h"
|
27
|
+
#include "src/core/lib/iomgr/combiner.h"
|
28
|
+
#include "src/core/lib/iomgr/sockaddr_utils.h"
|
29
|
+
#include "src/core/lib/transport/connectivity_state.h"
|
30
|
+
|
31
|
+
void grpc_lb_subchannel_data_unref_subchannel(grpc_exec_ctx* exec_ctx,
|
32
|
+
grpc_lb_subchannel_data* sd,
|
33
|
+
const char* reason) {
|
34
|
+
if (sd->subchannel != nullptr) {
|
35
|
+
if (sd->subchannel_list->tracer->enabled()) {
|
36
|
+
gpr_log(GPR_DEBUG,
|
37
|
+
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
38
|
+
" (subchannel %p): unreffing subchannel",
|
39
|
+
sd->subchannel_list->tracer->name(), sd->subchannel_list->policy,
|
40
|
+
sd->subchannel_list,
|
41
|
+
(size_t)(sd - sd->subchannel_list->subchannels),
|
42
|
+
sd->subchannel_list->num_subchannels, sd->subchannel);
|
43
|
+
}
|
44
|
+
GRPC_SUBCHANNEL_UNREF(exec_ctx, sd->subchannel, reason);
|
45
|
+
sd->subchannel = nullptr;
|
46
|
+
if (sd->connected_subchannel != nullptr) {
|
47
|
+
GRPC_CONNECTED_SUBCHANNEL_UNREF(exec_ctx, sd->connected_subchannel,
|
48
|
+
reason);
|
49
|
+
sd->connected_subchannel = nullptr;
|
50
|
+
}
|
51
|
+
if (sd->user_data != nullptr) {
|
52
|
+
GPR_ASSERT(sd->user_data_vtable != nullptr);
|
53
|
+
sd->user_data_vtable->destroy(exec_ctx, sd->user_data);
|
54
|
+
sd->user_data = nullptr;
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
|
59
|
+
void grpc_lb_subchannel_data_start_connectivity_watch(
|
60
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_subchannel_data* sd) {
|
61
|
+
if (sd->subchannel_list->tracer->enabled()) {
|
62
|
+
gpr_log(GPR_DEBUG,
|
63
|
+
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
64
|
+
" (subchannel %p): requesting connectivity change notification",
|
65
|
+
sd->subchannel_list->tracer->name(), sd->subchannel_list->policy,
|
66
|
+
sd->subchannel_list,
|
67
|
+
(size_t)(sd - sd->subchannel_list->subchannels),
|
68
|
+
sd->subchannel_list->num_subchannels, sd->subchannel);
|
69
|
+
}
|
70
|
+
sd->connectivity_notification_pending = true;
|
71
|
+
grpc_subchannel_notify_on_state_change(
|
72
|
+
exec_ctx, sd->subchannel, sd->subchannel_list->policy->interested_parties,
|
73
|
+
&sd->pending_connectivity_state_unsafe,
|
74
|
+
&sd->connectivity_changed_closure);
|
75
|
+
}
|
76
|
+
|
77
|
+
void grpc_lb_subchannel_data_stop_connectivity_watch(
|
78
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_subchannel_data* sd) {
|
79
|
+
if (sd->subchannel_list->tracer->enabled()) {
|
80
|
+
gpr_log(GPR_DEBUG,
|
81
|
+
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
82
|
+
" (subchannel %p): stopping connectivity watch",
|
83
|
+
sd->subchannel_list->tracer->name(), sd->subchannel_list->policy,
|
84
|
+
sd->subchannel_list,
|
85
|
+
(size_t)(sd - sd->subchannel_list->subchannels),
|
86
|
+
sd->subchannel_list->num_subchannels, sd->subchannel);
|
87
|
+
}
|
88
|
+
GPR_ASSERT(sd->connectivity_notification_pending);
|
89
|
+
sd->connectivity_notification_pending = false;
|
90
|
+
}
|
91
|
+
|
92
|
+
grpc_lb_subchannel_list* grpc_lb_subchannel_list_create(
|
93
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_policy* p, grpc_core::TraceFlag* tracer,
|
94
|
+
const grpc_lb_addresses* addresses, const grpc_lb_policy_args* args,
|
95
|
+
grpc_iomgr_cb_func connectivity_changed_cb) {
|
96
|
+
grpc_lb_subchannel_list* subchannel_list =
|
97
|
+
(grpc_lb_subchannel_list*)gpr_zalloc(sizeof(*subchannel_list));
|
98
|
+
if (tracer->enabled()) {
|
99
|
+
gpr_log(GPR_DEBUG,
|
100
|
+
"[%s %p] Creating subchannel list %p for %" PRIuPTR " subchannels",
|
101
|
+
tracer->name(), p, subchannel_list, addresses->num_addresses);
|
102
|
+
}
|
103
|
+
subchannel_list->policy = p;
|
104
|
+
subchannel_list->tracer = tracer;
|
105
|
+
gpr_ref_init(&subchannel_list->refcount, 1);
|
106
|
+
subchannel_list->subchannels = (grpc_lb_subchannel_data*)gpr_zalloc(
|
107
|
+
sizeof(grpc_lb_subchannel_data) * addresses->num_addresses);
|
108
|
+
// We need to remove the LB addresses in order to be able to compare the
|
109
|
+
// subchannel keys of subchannels from a different batch of addresses.
|
110
|
+
static const char* keys_to_remove[] = {GRPC_ARG_SUBCHANNEL_ADDRESS,
|
111
|
+
GRPC_ARG_LB_ADDRESSES};
|
112
|
+
// Create a subchannel for each address.
|
113
|
+
grpc_subchannel_args sc_args;
|
114
|
+
size_t subchannel_index = 0;
|
115
|
+
for (size_t i = 0; i < addresses->num_addresses; i++) {
|
116
|
+
// If there were any balancer, we would have chosen grpclb policy instead.
|
117
|
+
GPR_ASSERT(!addresses->addresses[i].is_balancer);
|
118
|
+
memset(&sc_args, 0, sizeof(grpc_subchannel_args));
|
119
|
+
grpc_arg addr_arg =
|
120
|
+
grpc_create_subchannel_address_arg(&addresses->addresses[i].address);
|
121
|
+
grpc_channel_args* new_args = grpc_channel_args_copy_and_add_and_remove(
|
122
|
+
args->args, keys_to_remove, GPR_ARRAY_SIZE(keys_to_remove), &addr_arg,
|
123
|
+
1);
|
124
|
+
gpr_free(addr_arg.value.string);
|
125
|
+
sc_args.args = new_args;
|
126
|
+
grpc_subchannel* subchannel = grpc_client_channel_factory_create_subchannel(
|
127
|
+
exec_ctx, args->client_channel_factory, &sc_args);
|
128
|
+
grpc_channel_args_destroy(exec_ctx, new_args);
|
129
|
+
if (subchannel == nullptr) {
|
130
|
+
// Subchannel could not be created.
|
131
|
+
if (tracer->enabled()) {
|
132
|
+
char* address_uri =
|
133
|
+
grpc_sockaddr_to_uri(&addresses->addresses[i].address);
|
134
|
+
gpr_log(GPR_DEBUG,
|
135
|
+
"[%s %p] could not create subchannel for address uri %s, "
|
136
|
+
"ignoring",
|
137
|
+
tracer->name(), subchannel_list->policy, address_uri);
|
138
|
+
gpr_free(address_uri);
|
139
|
+
}
|
140
|
+
continue;
|
141
|
+
}
|
142
|
+
if (tracer->enabled()) {
|
143
|
+
char* address_uri =
|
144
|
+
grpc_sockaddr_to_uri(&addresses->addresses[i].address);
|
145
|
+
gpr_log(GPR_DEBUG,
|
146
|
+
"[%s %p] subchannel list %p index %" PRIuPTR
|
147
|
+
": Created subchannel %p for address uri %s",
|
148
|
+
tracer->name(), p, subchannel_list, subchannel_index, subchannel,
|
149
|
+
address_uri);
|
150
|
+
gpr_free(address_uri);
|
151
|
+
}
|
152
|
+
grpc_lb_subchannel_data* sd =
|
153
|
+
&subchannel_list->subchannels[subchannel_index++];
|
154
|
+
sd->subchannel_list = subchannel_list;
|
155
|
+
sd->subchannel = subchannel;
|
156
|
+
GRPC_CLOSURE_INIT(&sd->connectivity_changed_closure,
|
157
|
+
connectivity_changed_cb, sd,
|
158
|
+
grpc_combiner_scheduler(args->combiner));
|
159
|
+
// We assume that the current state is IDLE. If not, we'll get a
|
160
|
+
// callback telling us that.
|
161
|
+
sd->prev_connectivity_state = GRPC_CHANNEL_IDLE;
|
162
|
+
sd->curr_connectivity_state = GRPC_CHANNEL_IDLE;
|
163
|
+
sd->pending_connectivity_state_unsafe = GRPC_CHANNEL_IDLE;
|
164
|
+
sd->user_data_vtable = addresses->user_data_vtable;
|
165
|
+
if (sd->user_data_vtable != nullptr) {
|
166
|
+
sd->user_data =
|
167
|
+
sd->user_data_vtable->copy(addresses->addresses[i].user_data);
|
168
|
+
}
|
169
|
+
}
|
170
|
+
subchannel_list->num_subchannels = subchannel_index;
|
171
|
+
subchannel_list->num_idle = subchannel_index;
|
172
|
+
return subchannel_list;
|
173
|
+
}
|
174
|
+
|
175
|
+
static void subchannel_list_destroy(grpc_exec_ctx* exec_ctx,
|
176
|
+
grpc_lb_subchannel_list* subchannel_list) {
|
177
|
+
if (subchannel_list->tracer->enabled()) {
|
178
|
+
gpr_log(GPR_DEBUG, "[%s %p] Destroying subchannel_list %p",
|
179
|
+
subchannel_list->tracer->name(), subchannel_list->policy,
|
180
|
+
subchannel_list);
|
181
|
+
}
|
182
|
+
for (size_t i = 0; i < subchannel_list->num_subchannels; i++) {
|
183
|
+
grpc_lb_subchannel_data* sd = &subchannel_list->subchannels[i];
|
184
|
+
grpc_lb_subchannel_data_unref_subchannel(exec_ctx, sd,
|
185
|
+
"subchannel_list_destroy");
|
186
|
+
}
|
187
|
+
gpr_free(subchannel_list->subchannels);
|
188
|
+
gpr_free(subchannel_list);
|
189
|
+
}
|
190
|
+
|
191
|
+
void grpc_lb_subchannel_list_ref(grpc_lb_subchannel_list* subchannel_list,
|
192
|
+
const char* reason) {
|
193
|
+
gpr_ref_non_zero(&subchannel_list->refcount);
|
194
|
+
if (subchannel_list->tracer->enabled()) {
|
195
|
+
const gpr_atm count = gpr_atm_acq_load(&subchannel_list->refcount.count);
|
196
|
+
gpr_log(GPR_DEBUG, "[%s %p] subchannel_list %p REF %lu->%lu (%s)",
|
197
|
+
subchannel_list->tracer->name(), subchannel_list->policy,
|
198
|
+
subchannel_list, (unsigned long)(count - 1), (unsigned long)count,
|
199
|
+
reason);
|
200
|
+
}
|
201
|
+
}
|
202
|
+
|
203
|
+
void grpc_lb_subchannel_list_unref(grpc_exec_ctx* exec_ctx,
|
204
|
+
grpc_lb_subchannel_list* subchannel_list,
|
205
|
+
const char* reason) {
|
206
|
+
const bool done = gpr_unref(&subchannel_list->refcount);
|
207
|
+
if (subchannel_list->tracer->enabled()) {
|
208
|
+
const gpr_atm count = gpr_atm_acq_load(&subchannel_list->refcount.count);
|
209
|
+
gpr_log(GPR_DEBUG, "[%s %p] subchannel_list %p UNREF %lu->%lu (%s)",
|
210
|
+
subchannel_list->tracer->name(), subchannel_list->policy,
|
211
|
+
subchannel_list, (unsigned long)(count + 1), (unsigned long)count,
|
212
|
+
reason);
|
213
|
+
}
|
214
|
+
if (done) {
|
215
|
+
subchannel_list_destroy(exec_ctx, subchannel_list);
|
216
|
+
}
|
217
|
+
}
|
218
|
+
|
219
|
+
void grpc_lb_subchannel_list_ref_for_connectivity_watch(
|
220
|
+
grpc_lb_subchannel_list* subchannel_list, const char* reason) {
|
221
|
+
GRPC_LB_POLICY_WEAK_REF(subchannel_list->policy, reason);
|
222
|
+
grpc_lb_subchannel_list_ref(subchannel_list, reason);
|
223
|
+
}
|
224
|
+
|
225
|
+
void grpc_lb_subchannel_list_unref_for_connectivity_watch(
|
226
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_subchannel_list* subchannel_list,
|
227
|
+
const char* reason) {
|
228
|
+
GRPC_LB_POLICY_WEAK_UNREF(exec_ctx, subchannel_list->policy, reason);
|
229
|
+
grpc_lb_subchannel_list_unref(exec_ctx, subchannel_list, reason);
|
230
|
+
}
|
231
|
+
|
232
|
+
static void subchannel_data_cancel_connectivity_watch(
|
233
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_subchannel_data* sd, const char* reason) {
|
234
|
+
if (sd->subchannel_list->tracer->enabled()) {
|
235
|
+
gpr_log(GPR_DEBUG,
|
236
|
+
"[%s %p] subchannel list %p index %" PRIuPTR " of %" PRIuPTR
|
237
|
+
" (subchannel %p): canceling connectivity watch (%s)",
|
238
|
+
sd->subchannel_list->tracer->name(), sd->subchannel_list->policy,
|
239
|
+
sd->subchannel_list,
|
240
|
+
(size_t)(sd - sd->subchannel_list->subchannels),
|
241
|
+
sd->subchannel_list->num_subchannels, sd->subchannel, reason);
|
242
|
+
}
|
243
|
+
grpc_subchannel_notify_on_state_change(exec_ctx, sd->subchannel, nullptr,
|
244
|
+
nullptr,
|
245
|
+
&sd->connectivity_changed_closure);
|
246
|
+
}
|
247
|
+
|
248
|
+
void grpc_lb_subchannel_list_shutdown_and_unref(
|
249
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_subchannel_list* subchannel_list,
|
250
|
+
const char* reason) {
|
251
|
+
if (subchannel_list->tracer->enabled()) {
|
252
|
+
gpr_log(GPR_DEBUG, "[%s %p] Shutting down subchannel_list %p (%s)",
|
253
|
+
subchannel_list->tracer->name(), subchannel_list->policy,
|
254
|
+
subchannel_list, reason);
|
255
|
+
}
|
256
|
+
GPR_ASSERT(!subchannel_list->shutting_down);
|
257
|
+
subchannel_list->shutting_down = true;
|
258
|
+
for (size_t i = 0; i < subchannel_list->num_subchannels; i++) {
|
259
|
+
grpc_lb_subchannel_data* sd = &subchannel_list->subchannels[i];
|
260
|
+
// If there's a pending notification for this subchannel, cancel it;
|
261
|
+
// the callback is responsible for unreffing the subchannel.
|
262
|
+
// Otherwise, unref the subchannel directly.
|
263
|
+
if (sd->connectivity_notification_pending) {
|
264
|
+
subchannel_data_cancel_connectivity_watch(exec_ctx, sd, reason);
|
265
|
+
} else if (sd->subchannel != nullptr) {
|
266
|
+
grpc_lb_subchannel_data_unref_subchannel(exec_ctx, sd, reason);
|
267
|
+
}
|
268
|
+
}
|
269
|
+
grpc_lb_subchannel_list_unref(exec_ctx, subchannel_list, reason);
|
270
|
+
}
|
@@ -0,0 +1,153 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2015 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#ifndef GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
|
20
|
+
#define GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H
|
21
|
+
|
22
|
+
#include "src/core/ext/filters/client_channel/lb_policy_registry.h"
|
23
|
+
#include "src/core/ext/filters/client_channel/subchannel.h"
|
24
|
+
#include "src/core/lib/debug/trace.h"
|
25
|
+
#include "src/core/lib/transport/connectivity_state.h"
|
26
|
+
|
27
|
+
// TODO(roth): This code is intended to be shared between pick_first and
|
28
|
+
// round_robin. However, the interface needs more work to provide clean
|
29
|
+
// encapsulation. For example, the structs here have some fields that are
|
30
|
+
// only used in one of the two (e.g., the state counters in
|
31
|
+
// grpc_lb_subchannel_list and the prev_connectivity_state field in
|
32
|
+
// grpc_lb_subchannel_data are only used in round_robin, and the
|
33
|
+
// checking_subchannel field in grpc_lb_subchannel_list is only used by
|
34
|
+
// pick_first). Also, there is probably some code duplication between the
|
35
|
+
// connectivity state notification callback code in both pick_first and
|
36
|
+
// round_robin that could be refactored and moved here. In a future PR,
|
37
|
+
// need to clean this up.
|
38
|
+
|
39
|
+
#ifdef __cplusplus
|
40
|
+
extern "C" {
|
41
|
+
#endif
|
42
|
+
|
43
|
+
typedef struct grpc_lb_subchannel_list grpc_lb_subchannel_list;
|
44
|
+
|
45
|
+
typedef struct {
|
46
|
+
/** backpointer to owning subchannel list */
|
47
|
+
grpc_lb_subchannel_list* subchannel_list;
|
48
|
+
/** subchannel itself */
|
49
|
+
grpc_subchannel* subchannel;
|
50
|
+
grpc_connected_subchannel* connected_subchannel;
|
51
|
+
/** Is a connectivity notification pending? */
|
52
|
+
bool connectivity_notification_pending;
|
53
|
+
/** notification that connectivity has changed on subchannel */
|
54
|
+
grpc_closure connectivity_changed_closure;
|
55
|
+
/** previous and current connectivity states. Updated by \a
|
56
|
+
* \a connectivity_changed_closure based on
|
57
|
+
* \a pending_connectivity_state_unsafe. */
|
58
|
+
grpc_connectivity_state prev_connectivity_state;
|
59
|
+
grpc_connectivity_state curr_connectivity_state;
|
60
|
+
/** connectivity state to be updated by
|
61
|
+
* grpc_subchannel_notify_on_state_change(), not guarded by
|
62
|
+
* the combiner. To be copied to \a curr_connectivity_state by
|
63
|
+
* \a connectivity_changed_closure. */
|
64
|
+
grpc_connectivity_state pending_connectivity_state_unsafe;
|
65
|
+
/** the subchannel's target user data */
|
66
|
+
void* user_data;
|
67
|
+
/** vtable to operate over \a user_data */
|
68
|
+
const grpc_lb_user_data_vtable* user_data_vtable;
|
69
|
+
} grpc_lb_subchannel_data;
|
70
|
+
|
71
|
+
/// Unrefs the subchannel contained in sd.
|
72
|
+
void grpc_lb_subchannel_data_unref_subchannel(grpc_exec_ctx* exec_ctx,
|
73
|
+
grpc_lb_subchannel_data* sd,
|
74
|
+
const char* reason);
|
75
|
+
|
76
|
+
/// Starts watching the connectivity state of the subchannel.
|
77
|
+
/// The connectivity_changed_cb callback must invoke either
|
78
|
+
/// grpc_lb_subchannel_data_stop_connectivity_watch() or again call
|
79
|
+
/// grpc_lb_subchannel_data_start_connectivity_watch().
|
80
|
+
void grpc_lb_subchannel_data_start_connectivity_watch(
|
81
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_subchannel_data* sd);
|
82
|
+
|
83
|
+
/// Stops watching the connectivity state of the subchannel.
|
84
|
+
void grpc_lb_subchannel_data_stop_connectivity_watch(
|
85
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_subchannel_data* sd);
|
86
|
+
|
87
|
+
struct grpc_lb_subchannel_list {
|
88
|
+
/** backpointer to owning policy */
|
89
|
+
grpc_lb_policy* policy;
|
90
|
+
|
91
|
+
grpc_core::TraceFlag* tracer;
|
92
|
+
|
93
|
+
/** all our subchannels */
|
94
|
+
size_t num_subchannels;
|
95
|
+
grpc_lb_subchannel_data* subchannels;
|
96
|
+
|
97
|
+
/** Index into subchannels of the one we're currently checking.
|
98
|
+
* Used when connecting to subchannels serially instead of in parallel. */
|
99
|
+
// TODO(roth): When we have time, we can probably make this go away
|
100
|
+
// and compute the index dynamically by subtracting
|
101
|
+
// subchannel_list->subchannels from the subchannel_data pointer.
|
102
|
+
size_t checking_subchannel;
|
103
|
+
|
104
|
+
/** how many subchannels are in state READY */
|
105
|
+
size_t num_ready;
|
106
|
+
/** how many subchannels are in state TRANSIENT_FAILURE */
|
107
|
+
size_t num_transient_failures;
|
108
|
+
/** how many subchannels are in state SHUTDOWN */
|
109
|
+
size_t num_shutdown;
|
110
|
+
/** how many subchannels are in state IDLE */
|
111
|
+
size_t num_idle;
|
112
|
+
|
113
|
+
/** There will be one ref for each entry in subchannels for which there is a
|
114
|
+
* pending connectivity state watcher callback. */
|
115
|
+
gpr_refcount refcount;
|
116
|
+
|
117
|
+
/** Is this list shutting down? This may be true due to the shutdown of the
|
118
|
+
* policy itself or because a newer update has arrived while this one hadn't
|
119
|
+
* finished processing. */
|
120
|
+
bool shutting_down;
|
121
|
+
};
|
122
|
+
|
123
|
+
grpc_lb_subchannel_list* grpc_lb_subchannel_list_create(
|
124
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_policy* p, grpc_core::TraceFlag* tracer,
|
125
|
+
const grpc_lb_addresses* addresses, const grpc_lb_policy_args* args,
|
126
|
+
grpc_iomgr_cb_func connectivity_changed_cb);
|
127
|
+
|
128
|
+
void grpc_lb_subchannel_list_ref(grpc_lb_subchannel_list* subchannel_list,
|
129
|
+
const char* reason);
|
130
|
+
|
131
|
+
void grpc_lb_subchannel_list_unref(grpc_exec_ctx* exec_ctx,
|
132
|
+
grpc_lb_subchannel_list* subchannel_list,
|
133
|
+
const char* reason);
|
134
|
+
|
135
|
+
/// Takes and releases refs needed for a connectivity notification.
|
136
|
+
/// This includes a ref to subchannel_list and a weak ref to the LB policy.
|
137
|
+
void grpc_lb_subchannel_list_ref_for_connectivity_watch(
|
138
|
+
grpc_lb_subchannel_list* subchannel_list, const char* reason);
|
139
|
+
void grpc_lb_subchannel_list_unref_for_connectivity_watch(
|
140
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_subchannel_list* subchannel_list,
|
141
|
+
const char* reason);
|
142
|
+
|
143
|
+
/// Mark subchannel_list as discarded. Unsubscribes all its subchannels. The
|
144
|
+
/// connectivity state notification callback will ultimately unref it.
|
145
|
+
void grpc_lb_subchannel_list_shutdown_and_unref(
|
146
|
+
grpc_exec_ctx* exec_ctx, grpc_lb_subchannel_list* subchannel_list,
|
147
|
+
const char* reason);
|
148
|
+
|
149
|
+
#ifdef __cplusplus
|
150
|
+
}
|
151
|
+
#endif
|
152
|
+
|
153
|
+
#endif /* GRPC_CORE_EXT_FILTERS_CLIENT_CHANNEL_LB_POLICY_SUBCHANNEL_LIST_H */
|
@@ -43,11 +43,11 @@ grpc_lb_addresses* grpc_lb_addresses_copy(const grpc_lb_addresses* addresses) {
|
|
43
43
|
memcpy(new_addresses->addresses, addresses->addresses,
|
44
44
|
sizeof(grpc_lb_address) * addresses->num_addresses);
|
45
45
|
for (size_t i = 0; i < addresses->num_addresses; ++i) {
|
46
|
-
if (new_addresses->addresses[i].balancer_name !=
|
46
|
+
if (new_addresses->addresses[i].balancer_name != nullptr) {
|
47
47
|
new_addresses->addresses[i].balancer_name =
|
48
48
|
gpr_strdup(new_addresses->addresses[i].balancer_name);
|
49
49
|
}
|
50
|
-
if (new_addresses->addresses[i].user_data !=
|
50
|
+
if (new_addresses->addresses[i].user_data != nullptr) {
|
51
51
|
new_addresses->addresses[i].user_data = addresses->user_data_vtable->copy(
|
52
52
|
new_addresses->addresses[i].user_data);
|
53
53
|
}
|
@@ -60,7 +60,7 @@ void grpc_lb_addresses_set_address(grpc_lb_addresses* addresses, size_t index,
|
|
60
60
|
bool is_balancer, const char* balancer_name,
|
61
61
|
void* user_data) {
|
62
62
|
GPR_ASSERT(index < addresses->num_addresses);
|
63
|
-
if (user_data !=
|
63
|
+
if (user_data != nullptr) GPR_ASSERT(addresses->user_data_vtable != nullptr);
|
64
64
|
grpc_lb_address* target = &addresses->addresses[index];
|
65
65
|
memcpy(target->address.addr, address, address_len);
|
66
66
|
target->address.len = address_len;
|
@@ -98,12 +98,12 @@ int grpc_lb_addresses_cmp(const grpc_lb_addresses* addresses1,
|
|
98
98
|
if (target1->is_balancer > target2->is_balancer) return 1;
|
99
99
|
if (target1->is_balancer < target2->is_balancer) return -1;
|
100
100
|
const char* balancer_name1 =
|
101
|
-
target1->balancer_name !=
|
101
|
+
target1->balancer_name != nullptr ? target1->balancer_name : "";
|
102
102
|
const char* balancer_name2 =
|
103
|
-
target2->balancer_name !=
|
103
|
+
target2->balancer_name != nullptr ? target2->balancer_name : "";
|
104
104
|
retval = strcmp(balancer_name1, balancer_name2);
|
105
105
|
if (retval != 0) return retval;
|
106
|
-
if (addresses1->user_data_vtable !=
|
106
|
+
if (addresses1->user_data_vtable != nullptr) {
|
107
107
|
retval = addresses1->user_data_vtable->cmp(target1->user_data,
|
108
108
|
target2->user_data);
|
109
109
|
if (retval != 0) return retval;
|
@@ -116,7 +116,7 @@ void grpc_lb_addresses_destroy(grpc_exec_ctx* exec_ctx,
|
|
116
116
|
grpc_lb_addresses* addresses) {
|
117
117
|
for (size_t i = 0; i < addresses->num_addresses; ++i) {
|
118
118
|
gpr_free(addresses->addresses[i].balancer_name);
|
119
|
-
if (addresses->addresses[i].user_data !=
|
119
|
+
if (addresses->addresses[i].user_data != nullptr) {
|
120
120
|
addresses->user_data_vtable->destroy(exec_ctx,
|
121
121
|
addresses->addresses[i].user_data);
|
122
122
|
}
|
@@ -148,8 +148,8 @@ grpc_lb_addresses* grpc_lb_addresses_find_channel_arg(
|
|
148
148
|
const grpc_channel_args* channel_args) {
|
149
149
|
const grpc_arg* lb_addresses_arg =
|
150
150
|
grpc_channel_args_find(channel_args, GRPC_ARG_LB_ADDRESSES);
|
151
|
-
if (lb_addresses_arg ==
|
152
|
-
return
|
151
|
+
if (lb_addresses_arg == nullptr || lb_addresses_arg->type != GRPC_ARG_POINTER)
|
152
|
+
return nullptr;
|
153
153
|
return (grpc_lb_addresses*)lb_addresses_arg->value.pointer.p;
|
154
154
|
}
|
155
155
|
|
@@ -164,6 +164,6 @@ void grpc_lb_policy_factory_unref(grpc_lb_policy_factory* factory) {
|
|
164
164
|
grpc_lb_policy* grpc_lb_policy_factory_create_lb_policy(
|
165
165
|
grpc_exec_ctx* exec_ctx, grpc_lb_policy_factory* factory,
|
166
166
|
grpc_lb_policy_args* args) {
|
167
|
-
if (factory ==
|
167
|
+
if (factory == nullptr) return nullptr;
|
168
168
|
return factory->vtable->create_lb_policy(exec_ctx, factory, args);
|
169
169
|
}
|