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
@@ -18,11 +18,14 @@
|
|
18
18
|
|
19
19
|
#include "src/core/lib/iomgr/port.h"
|
20
20
|
|
21
|
+
#include <inttypes.h>
|
22
|
+
|
21
23
|
#ifdef GRPC_TIMER_USE_GENERIC
|
22
24
|
|
23
25
|
#include "src/core/lib/iomgr/timer.h"
|
24
26
|
|
25
27
|
#include <grpc/support/alloc.h>
|
28
|
+
#include <grpc/support/cpu.h>
|
26
29
|
#include <grpc/support/log.h>
|
27
30
|
#include <grpc/support/string_util.h>
|
28
31
|
#include <grpc/support/sync.h>
|
@@ -35,15 +38,12 @@
|
|
35
38
|
|
36
39
|
#define INVALID_HEAP_INDEX 0xffffffffu
|
37
40
|
|
38
|
-
#define LOG2_NUM_SHARDS 5
|
39
|
-
#define NUM_SHARDS (1 << LOG2_NUM_SHARDS)
|
40
41
|
#define ADD_DEADLINE_SCALE 0.33
|
41
42
|
#define MIN_QUEUE_WINDOW_DURATION 0.01
|
42
43
|
#define MAX_QUEUE_WINDOW_DURATION 1
|
43
44
|
|
44
|
-
|
45
|
-
|
46
|
-
GRPC_TRACER_INITIALIZER(false, "timer_check");
|
45
|
+
grpc_core::TraceFlag grpc_timer_trace(false, "timer");
|
46
|
+
grpc_core::TraceFlag grpc_timer_check_trace(false, "timer_check");
|
47
47
|
|
48
48
|
/* A "timer shard". Contains a 'heap' and a 'list' of timers. All timers with
|
49
49
|
* deadlines earlier than 'queue_deadline" cap are maintained in the heap and
|
@@ -70,14 +70,16 @@ typedef struct {
|
|
70
70
|
grpc_timer list;
|
71
71
|
} timer_shard;
|
72
72
|
|
73
|
+
static size_t g_num_shards;
|
74
|
+
|
73
75
|
/* Array of timer shards. Whenever a timer (grpc_timer *) is added, its address
|
74
76
|
* is hashed to select the timer shard to add the timer to */
|
75
|
-
static timer_shard g_shards
|
77
|
+
static timer_shard* g_shards;
|
76
78
|
|
77
79
|
/* Maintains a sorted list of timer shards (sorted by their min_deadline, i.e
|
78
80
|
* the deadline of the next timer in each shard).
|
79
81
|
* Access to this is protected by g_shared_mutables.mu */
|
80
|
-
static timer_shard
|
82
|
+
static timer_shard** g_shard_queue;
|
81
83
|
|
82
84
|
#ifndef NDEBUG
|
83
85
|
|
@@ -86,7 +88,7 @@ static timer_shard *g_shard_queue[NUM_SHARDS];
|
|
86
88
|
#define NUM_HASH_BUCKETS 1009 /* Prime number close to 1000 */
|
87
89
|
|
88
90
|
static gpr_mu g_hash_mu[NUM_HASH_BUCKETS]; /* One mutex per bucket */
|
89
|
-
static grpc_timer
|
91
|
+
static grpc_timer* g_timer_ht[NUM_HASH_BUCKETS] = {nullptr};
|
90
92
|
|
91
93
|
static void init_timer_ht() {
|
92
94
|
for (int i = 0; i < NUM_HASH_BUCKETS; i++) {
|
@@ -94,12 +96,12 @@ static void init_timer_ht() {
|
|
94
96
|
}
|
95
97
|
}
|
96
98
|
|
97
|
-
static bool is_in_ht(grpc_timer
|
99
|
+
static bool is_in_ht(grpc_timer* t) {
|
98
100
|
size_t i = GPR_HASH_POINTER(t, NUM_HASH_BUCKETS);
|
99
101
|
|
100
102
|
gpr_mu_lock(&g_hash_mu[i]);
|
101
|
-
grpc_timer
|
102
|
-
while (p !=
|
103
|
+
grpc_timer* p = g_timer_ht[i];
|
104
|
+
while (p != nullptr && p != t) {
|
103
105
|
p = p->hash_table_next;
|
104
106
|
}
|
105
107
|
gpr_mu_unlock(&g_hash_mu[i]);
|
@@ -107,18 +109,18 @@ static bool is_in_ht(grpc_timer *t) {
|
|
107
109
|
return (p == t);
|
108
110
|
}
|
109
111
|
|
110
|
-
static void add_to_ht(grpc_timer
|
112
|
+
static void add_to_ht(grpc_timer* t) {
|
111
113
|
GPR_ASSERT(!t->hash_table_next);
|
112
114
|
size_t i = GPR_HASH_POINTER(t, NUM_HASH_BUCKETS);
|
113
115
|
|
114
116
|
gpr_mu_lock(&g_hash_mu[i]);
|
115
|
-
grpc_timer
|
116
|
-
while (p !=
|
117
|
+
grpc_timer* p = g_timer_ht[i];
|
118
|
+
while (p != nullptr && p != t) {
|
117
119
|
p = p->hash_table_next;
|
118
120
|
}
|
119
121
|
|
120
122
|
if (p == t) {
|
121
|
-
grpc_closure
|
123
|
+
grpc_closure* c = t->closure;
|
122
124
|
gpr_log(GPR_ERROR,
|
123
125
|
"** Duplicate timer (%p) being added. Closure: (%p), created at: "
|
124
126
|
"(%s:%d), scheduled at: (%s:%d) **",
|
@@ -133,7 +135,7 @@ static void add_to_ht(grpc_timer *t) {
|
|
133
135
|
gpr_mu_unlock(&g_hash_mu[i]);
|
134
136
|
}
|
135
137
|
|
136
|
-
static void remove_from_ht(grpc_timer
|
138
|
+
static void remove_from_ht(grpc_timer* t) {
|
137
139
|
size_t i = GPR_HASH_POINTER(t, NUM_HASH_BUCKETS);
|
138
140
|
bool removed = false;
|
139
141
|
|
@@ -141,9 +143,9 @@ static void remove_from_ht(grpc_timer *t) {
|
|
141
143
|
if (g_timer_ht[i] == t) {
|
142
144
|
g_timer_ht[i] = g_timer_ht[i]->hash_table_next;
|
143
145
|
removed = true;
|
144
|
-
} else if (g_timer_ht[i] !=
|
145
|
-
grpc_timer
|
146
|
-
while (p->hash_table_next !=
|
146
|
+
} else if (g_timer_ht[i] != nullptr) {
|
147
|
+
grpc_timer* p = g_timer_ht[i];
|
148
|
+
while (p->hash_table_next != nullptr && p->hash_table_next != t) {
|
147
149
|
p = p->hash_table_next;
|
148
150
|
}
|
149
151
|
|
@@ -155,7 +157,7 @@ static void remove_from_ht(grpc_timer *t) {
|
|
155
157
|
gpr_mu_unlock(&g_hash_mu[i]);
|
156
158
|
|
157
159
|
if (!removed) {
|
158
|
-
grpc_closure
|
160
|
+
grpc_closure* c = t->closure;
|
159
161
|
gpr_log(GPR_ERROR,
|
160
162
|
"** Removing timer (%p) that is not added to hash table. Closure "
|
161
163
|
"(%p), created at: (%s:%d), scheduled at: (%s:%d) **",
|
@@ -164,16 +166,16 @@ static void remove_from_ht(grpc_timer *t) {
|
|
164
166
|
abort();
|
165
167
|
}
|
166
168
|
|
167
|
-
t->hash_table_next =
|
169
|
+
t->hash_table_next = nullptr;
|
168
170
|
}
|
169
171
|
|
170
172
|
/* If a timer is added to a timer shard (either heap or a list), it cannot
|
171
173
|
* be pending. A timer is added to hash table only-if it is added to the
|
172
174
|
* timer shard.
|
173
175
|
* Therefore, if timer->pending is false, it cannot be in hash table */
|
174
|
-
static void validate_non_pending_timer(grpc_timer
|
176
|
+
static void validate_non_pending_timer(grpc_timer* t) {
|
175
177
|
if (!t->pending && is_in_ht(t)) {
|
176
|
-
grpc_closure
|
178
|
+
grpc_closure* c = t->closure;
|
177
179
|
gpr_log(GPR_ERROR,
|
178
180
|
"** gpr_timer_cancel() called on a non-pending timer (%p) which "
|
179
181
|
"is in the hash table. Closure: (%p), created at: (%s:%d), "
|
@@ -216,9 +218,6 @@ struct shared_mutables {
|
|
216
218
|
|
217
219
|
static struct shared_mutables g_shared_mutables;
|
218
220
|
|
219
|
-
static gpr_clock_type g_clock_type;
|
220
|
-
static gpr_timespec g_start_time;
|
221
|
-
|
222
221
|
static gpr_atm saturating_add(gpr_atm a, gpr_atm b) {
|
223
222
|
if (a > GPR_ATM_MAX - b) {
|
224
223
|
return GPR_ATM_MAX;
|
@@ -226,64 +225,34 @@ static gpr_atm saturating_add(gpr_atm a, gpr_atm b) {
|
|
226
225
|
return a + b;
|
227
226
|
}
|
228
227
|
|
229
|
-
static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx
|
228
|
+
static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx* exec_ctx,
|
230
229
|
gpr_atm now,
|
231
|
-
gpr_atm
|
232
|
-
grpc_error
|
233
|
-
|
234
|
-
static gpr_timespec dbl_to_ts(double d) {
|
235
|
-
gpr_timespec ts;
|
236
|
-
ts.tv_sec = (int64_t)d;
|
237
|
-
ts.tv_nsec = (int32_t)(1e9 * (d - (double)ts.tv_sec));
|
238
|
-
ts.clock_type = GPR_TIMESPAN;
|
239
|
-
return ts;
|
240
|
-
}
|
230
|
+
gpr_atm* next,
|
231
|
+
grpc_error* error);
|
241
232
|
|
242
|
-
static gpr_atm
|
243
|
-
ts = gpr_time_sub(ts, g_start_time);
|
244
|
-
double x = GPR_MS_PER_SEC * (double)ts.tv_sec +
|
245
|
-
(double)ts.tv_nsec / GPR_NS_PER_MS +
|
246
|
-
(double)(GPR_NS_PER_SEC - 1) / (double)GPR_NS_PER_SEC;
|
247
|
-
if (x < 0) return 0;
|
248
|
-
if (x > GPR_ATM_MAX) return GPR_ATM_MAX;
|
249
|
-
return (gpr_atm)x;
|
250
|
-
}
|
251
|
-
|
252
|
-
static gpr_atm timespec_to_atm_round_down(gpr_timespec ts) {
|
253
|
-
ts = gpr_time_sub(ts, g_start_time);
|
254
|
-
double x =
|
255
|
-
GPR_MS_PER_SEC * (double)ts.tv_sec + (double)ts.tv_nsec / GPR_NS_PER_MS;
|
256
|
-
if (x < 0) return 0;
|
257
|
-
if (x > GPR_ATM_MAX) return GPR_ATM_MAX;
|
258
|
-
return (gpr_atm)x;
|
259
|
-
}
|
260
|
-
|
261
|
-
static gpr_timespec atm_to_timespec(gpr_atm x) {
|
262
|
-
return gpr_time_add(g_start_time, dbl_to_ts((double)x / 1000.0));
|
263
|
-
}
|
264
|
-
|
265
|
-
static gpr_atm compute_min_deadline(timer_shard *shard) {
|
233
|
+
static gpr_atm compute_min_deadline(timer_shard* shard) {
|
266
234
|
return grpc_timer_heap_is_empty(&shard->heap)
|
267
235
|
? saturating_add(shard->queue_deadline_cap, 1)
|
268
236
|
: grpc_timer_heap_top(&shard->heap)->deadline;
|
269
237
|
}
|
270
238
|
|
271
|
-
void grpc_timer_list_init(
|
239
|
+
void grpc_timer_list_init(grpc_exec_ctx* exec_ctx) {
|
272
240
|
uint32_t i;
|
273
241
|
|
242
|
+
g_num_shards = GPR_MIN(1, 2 * gpr_cpu_num_cores());
|
243
|
+
g_shards = (timer_shard*)gpr_zalloc(g_num_shards * sizeof(*g_shards));
|
244
|
+
g_shard_queue =
|
245
|
+
(timer_shard**)gpr_zalloc(g_num_shards * sizeof(*g_shard_queue));
|
246
|
+
|
274
247
|
g_shared_mutables.initialized = true;
|
275
248
|
g_shared_mutables.checker_mu = GPR_SPINLOCK_INITIALIZER;
|
276
249
|
gpr_mu_init(&g_shared_mutables.mu);
|
277
|
-
|
278
|
-
g_start_time = now;
|
279
|
-
g_shared_mutables.min_timer = timespec_to_atm_round_down(now);
|
250
|
+
g_shared_mutables.min_timer = grpc_exec_ctx_now(exec_ctx);
|
280
251
|
gpr_tls_init(&g_last_seen_min_timer);
|
281
252
|
gpr_tls_set(&g_last_seen_min_timer, 0);
|
282
|
-
grpc_register_tracer(&grpc_timer_trace);
|
283
|
-
grpc_register_tracer(&grpc_timer_check_trace);
|
284
253
|
|
285
|
-
for (i = 0; i <
|
286
|
-
timer_shard
|
254
|
+
for (i = 0; i < g_num_shards; i++) {
|
255
|
+
timer_shard* shard = &g_shards[i];
|
287
256
|
gpr_mu_init(&shard->mu);
|
288
257
|
grpc_time_averaged_stats_init(&shard->stats, 1.0 / ADD_DEADLINE_SCALE, 0.1,
|
289
258
|
0.5);
|
@@ -298,39 +267,37 @@ void grpc_timer_list_init(gpr_timespec now) {
|
|
298
267
|
INIT_TIMER_HASH_TABLE();
|
299
268
|
}
|
300
269
|
|
301
|
-
void grpc_timer_list_shutdown(grpc_exec_ctx
|
302
|
-
|
270
|
+
void grpc_timer_list_shutdown(grpc_exec_ctx* exec_ctx) {
|
271
|
+
size_t i;
|
303
272
|
run_some_expired_timers(
|
304
|
-
exec_ctx, GPR_ATM_MAX,
|
273
|
+
exec_ctx, GPR_ATM_MAX, nullptr,
|
305
274
|
GRPC_ERROR_CREATE_FROM_STATIC_STRING("Timer list shutdown"));
|
306
|
-
for (i = 0; i <
|
307
|
-
timer_shard
|
275
|
+
for (i = 0; i < g_num_shards; i++) {
|
276
|
+
timer_shard* shard = &g_shards[i];
|
308
277
|
gpr_mu_destroy(&shard->mu);
|
309
278
|
grpc_timer_heap_destroy(&shard->heap);
|
310
279
|
}
|
311
280
|
gpr_mu_destroy(&g_shared_mutables.mu);
|
312
281
|
gpr_tls_destroy(&g_last_seen_min_timer);
|
282
|
+
gpr_free(g_shards);
|
283
|
+
gpr_free(g_shard_queue);
|
313
284
|
g_shared_mutables.initialized = false;
|
314
285
|
}
|
315
286
|
|
316
|
-
static double ts_to_dbl(gpr_timespec ts) {
|
317
|
-
return (double)ts.tv_sec + 1e-9 * ts.tv_nsec;
|
318
|
-
}
|
319
|
-
|
320
287
|
/* returns true if the first element in the list */
|
321
|
-
static void list_join(grpc_timer
|
288
|
+
static void list_join(grpc_timer* head, grpc_timer* timer) {
|
322
289
|
timer->next = head;
|
323
290
|
timer->prev = head->prev;
|
324
291
|
timer->next->prev = timer->prev->next = timer;
|
325
292
|
}
|
326
293
|
|
327
|
-
static void list_remove(grpc_timer
|
294
|
+
static void list_remove(grpc_timer* timer) {
|
328
295
|
timer->next->prev = timer->prev;
|
329
296
|
timer->prev->next = timer->next;
|
330
297
|
}
|
331
298
|
|
332
299
|
static void swap_adjacent_shards_in_queue(uint32_t first_shard_queue_index) {
|
333
|
-
timer_shard
|
300
|
+
timer_shard* temp;
|
334
301
|
temp = g_shard_queue[first_shard_queue_index];
|
335
302
|
g_shard_queue[first_shard_queue_index] =
|
336
303
|
g_shard_queue[first_shard_queue_index + 1];
|
@@ -341,40 +308,36 @@ static void swap_adjacent_shards_in_queue(uint32_t first_shard_queue_index) {
|
|
341
308
|
first_shard_queue_index + 1;
|
342
309
|
}
|
343
310
|
|
344
|
-
static void note_deadline_change(timer_shard
|
311
|
+
static void note_deadline_change(timer_shard* shard) {
|
345
312
|
while (shard->shard_queue_index > 0 &&
|
346
313
|
shard->min_deadline <
|
347
314
|
g_shard_queue[shard->shard_queue_index - 1]->min_deadline) {
|
348
315
|
swap_adjacent_shards_in_queue(shard->shard_queue_index - 1);
|
349
316
|
}
|
350
|
-
while (shard->shard_queue_index <
|
317
|
+
while (shard->shard_queue_index < g_num_shards - 1 &&
|
351
318
|
shard->min_deadline >
|
352
319
|
g_shard_queue[shard->shard_queue_index + 1]->min_deadline) {
|
353
320
|
swap_adjacent_shards_in_queue(shard->shard_queue_index);
|
354
321
|
}
|
355
322
|
}
|
356
323
|
|
357
|
-
void grpc_timer_init_unset(grpc_timer
|
324
|
+
void grpc_timer_init_unset(grpc_timer* timer) { timer->pending = false; }
|
358
325
|
|
359
|
-
void grpc_timer_init(grpc_exec_ctx
|
360
|
-
|
361
|
-
gpr_timespec now) {
|
326
|
+
void grpc_timer_init(grpc_exec_ctx* exec_ctx, grpc_timer* timer,
|
327
|
+
grpc_millis deadline, grpc_closure* closure) {
|
362
328
|
int is_first_timer = 0;
|
363
|
-
timer_shard
|
364
|
-
GPR_ASSERT(deadline.clock_type == g_clock_type);
|
365
|
-
GPR_ASSERT(now.clock_type == g_clock_type);
|
329
|
+
timer_shard* shard = &g_shards[GPR_HASH_POINTER(timer, g_num_shards)];
|
366
330
|
timer->closure = closure;
|
367
|
-
|
331
|
+
timer->deadline = deadline;
|
368
332
|
|
369
333
|
#ifndef NDEBUG
|
370
|
-
timer->hash_table_next =
|
334
|
+
timer->hash_table_next = nullptr;
|
371
335
|
#endif
|
372
336
|
|
373
|
-
if (
|
374
|
-
gpr_log(GPR_DEBUG,
|
375
|
-
|
376
|
-
|
377
|
-
now.tv_nsec, timespec_to_atm_round_down(now), closure, closure->cb);
|
337
|
+
if (grpc_timer_trace.enabled()) {
|
338
|
+
gpr_log(GPR_DEBUG,
|
339
|
+
"TIMER %p: SET %" PRIdPTR " now %" PRIdPTR " call %p[%p]", timer,
|
340
|
+
deadline, grpc_exec_ctx_now(exec_ctx), closure, closure->cb);
|
378
341
|
}
|
379
342
|
|
380
343
|
if (!g_shared_mutables.initialized) {
|
@@ -387,7 +350,8 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
|
|
387
350
|
|
388
351
|
gpr_mu_lock(&shard->mu);
|
389
352
|
timer->pending = true;
|
390
|
-
|
353
|
+
grpc_millis now = grpc_exec_ctx_now(exec_ctx);
|
354
|
+
if (deadline <= now) {
|
391
355
|
timer->pending = false;
|
392
356
|
GRPC_CLOSURE_SCHED(exec_ctx, timer->closure, GRPC_ERROR_NONE);
|
393
357
|
gpr_mu_unlock(&shard->mu);
|
@@ -396,19 +360,20 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
|
|
396
360
|
}
|
397
361
|
|
398
362
|
grpc_time_averaged_stats_add_sample(&shard->stats,
|
399
|
-
|
363
|
+
(double)(deadline - now) / 1000.0);
|
400
364
|
|
401
365
|
ADD_TO_HASH_TABLE(timer);
|
402
366
|
|
403
|
-
if (
|
367
|
+
if (deadline < shard->queue_deadline_cap) {
|
404
368
|
is_first_timer = grpc_timer_heap_add(&shard->heap, timer);
|
405
369
|
} else {
|
406
370
|
timer->heap_index = INVALID_HEAP_INDEX;
|
407
371
|
list_join(&shard->list, timer);
|
408
372
|
}
|
409
|
-
if (
|
410
|
-
gpr_log(GPR_DEBUG,
|
411
|
-
|
373
|
+
if (grpc_timer_trace.enabled()) {
|
374
|
+
gpr_log(GPR_DEBUG,
|
375
|
+
" .. add to shard %d with queue_deadline_cap=%" PRIdPTR
|
376
|
+
" => is_first_timer=%s",
|
412
377
|
(int)(shard - g_shards), shard->queue_deadline_cap,
|
413
378
|
is_first_timer ? "true" : "false");
|
414
379
|
}
|
@@ -427,16 +392,16 @@ void grpc_timer_init(grpc_exec_ctx *exec_ctx, grpc_timer *timer,
|
|
427
392
|
grpc_timer_check. */
|
428
393
|
if (is_first_timer) {
|
429
394
|
gpr_mu_lock(&g_shared_mutables.mu);
|
430
|
-
if (
|
395
|
+
if (grpc_timer_trace.enabled()) {
|
431
396
|
gpr_log(GPR_DEBUG, " .. old shard min_deadline=%" PRIdPTR,
|
432
397
|
shard->min_deadline);
|
433
398
|
}
|
434
|
-
if (
|
399
|
+
if (deadline < shard->min_deadline) {
|
435
400
|
gpr_atm old_min_deadline = g_shard_queue[0]->min_deadline;
|
436
|
-
shard->min_deadline =
|
401
|
+
shard->min_deadline = deadline;
|
437
402
|
note_deadline_change(shard);
|
438
|
-
if (shard->shard_queue_index == 0 &&
|
439
|
-
gpr_atm_no_barrier_store(&g_shared_mutables.min_timer,
|
403
|
+
if (shard->shard_queue_index == 0 && deadline < old_min_deadline) {
|
404
|
+
gpr_atm_no_barrier_store(&g_shared_mutables.min_timer, deadline);
|
440
405
|
grpc_kick_poller();
|
441
406
|
}
|
442
407
|
}
|
@@ -449,15 +414,15 @@ void grpc_timer_consume_kick(void) {
|
|
449
414
|
gpr_tls_set(&g_last_seen_min_timer, 0);
|
450
415
|
}
|
451
416
|
|
452
|
-
void grpc_timer_cancel(grpc_exec_ctx
|
417
|
+
void grpc_timer_cancel(grpc_exec_ctx* exec_ctx, grpc_timer* timer) {
|
453
418
|
if (!g_shared_mutables.initialized) {
|
454
419
|
/* must have already been cancelled, also the shard mutex is invalid */
|
455
420
|
return;
|
456
421
|
}
|
457
422
|
|
458
|
-
timer_shard
|
423
|
+
timer_shard* shard = &g_shards[GPR_HASH_POINTER(timer, g_num_shards)];
|
459
424
|
gpr_mu_lock(&shard->mu);
|
460
|
-
if (
|
425
|
+
if (grpc_timer_trace.enabled()) {
|
461
426
|
gpr_log(GPR_DEBUG, "TIMER %p: CANCEL pending=%s", timer,
|
462
427
|
timer->pending ? "true" : "false");
|
463
428
|
}
|
@@ -483,7 +448,7 @@ void grpc_timer_cancel(grpc_exec_ctx *exec_ctx, grpc_timer *timer) {
|
|
483
448
|
'queue_deadline_cap') into into shard->heap.
|
484
449
|
Returns 'true' if shard->heap has atleast ONE element
|
485
450
|
REQUIRES: shard->mu locked */
|
486
|
-
static int refill_heap(timer_shard
|
451
|
+
static int refill_heap(timer_shard* shard, gpr_atm now) {
|
487
452
|
/* Compute the new queue window width and bound by the limits: */
|
488
453
|
double computed_deadline_delta =
|
489
454
|
grpc_time_averaged_stats_update_average(&shard->stats) *
|
@@ -498,7 +463,7 @@ static int refill_heap(timer_shard *shard, gpr_atm now) {
|
|
498
463
|
saturating_add(GPR_MAX(now, shard->queue_deadline_cap),
|
499
464
|
(gpr_atm)(deadline_delta * 1000.0));
|
500
465
|
|
501
|
-
if (
|
466
|
+
if (grpc_timer_check_trace.enabled()) {
|
502
467
|
gpr_log(GPR_DEBUG, " .. shard[%d]->queue_deadline_cap --> %" PRIdPTR,
|
503
468
|
(int)(shard - g_shards), shard->queue_deadline_cap);
|
504
469
|
}
|
@@ -506,7 +471,7 @@ static int refill_heap(timer_shard *shard, gpr_atm now) {
|
|
506
471
|
next = timer->next;
|
507
472
|
|
508
473
|
if (timer->deadline < shard->queue_deadline_cap) {
|
509
|
-
if (
|
474
|
+
if (grpc_timer_check_trace.enabled()) {
|
510
475
|
gpr_log(GPR_DEBUG, " .. add timer with deadline %" PRIdPTR " to heap",
|
511
476
|
timer->deadline);
|
512
477
|
}
|
@@ -520,28 +485,29 @@ static int refill_heap(timer_shard *shard, gpr_atm now) {
|
|
520
485
|
/* This pops the next non-cancelled timer with deadline <= now from the
|
521
486
|
queue, or returns NULL if there isn't one.
|
522
487
|
REQUIRES: shard->mu locked */
|
523
|
-
static grpc_timer
|
524
|
-
grpc_timer
|
488
|
+
static grpc_timer* pop_one(timer_shard* shard, gpr_atm now) {
|
489
|
+
grpc_timer* timer;
|
525
490
|
for (;;) {
|
526
|
-
if (
|
491
|
+
if (grpc_timer_check_trace.enabled()) {
|
527
492
|
gpr_log(GPR_DEBUG, " .. shard[%d]: heap_empty=%s",
|
528
493
|
(int)(shard - g_shards),
|
529
494
|
grpc_timer_heap_is_empty(&shard->heap) ? "true" : "false");
|
530
495
|
}
|
531
496
|
if (grpc_timer_heap_is_empty(&shard->heap)) {
|
532
|
-
if (now < shard->queue_deadline_cap) return
|
533
|
-
if (!refill_heap(shard, now)) return
|
497
|
+
if (now < shard->queue_deadline_cap) return nullptr;
|
498
|
+
if (!refill_heap(shard, now)) return nullptr;
|
534
499
|
}
|
535
500
|
timer = grpc_timer_heap_top(&shard->heap);
|
536
|
-
if (
|
501
|
+
if (grpc_timer_check_trace.enabled()) {
|
537
502
|
gpr_log(GPR_DEBUG,
|
538
503
|
" .. check top timer deadline=%" PRIdPTR " now=%" PRIdPTR,
|
539
504
|
timer->deadline, now);
|
540
505
|
}
|
541
|
-
if (timer->deadline > now) return
|
542
|
-
if (
|
543
|
-
gpr_log(GPR_DEBUG, "TIMER %p: FIRE %" PRIdPTR "ms late",
|
544
|
-
now - timer->deadline
|
506
|
+
if (timer->deadline > now) return nullptr;
|
507
|
+
if (grpc_timer_trace.enabled()) {
|
508
|
+
gpr_log(GPR_DEBUG, "TIMER %p: FIRE %" PRIdPTR "ms late via %s scheduler",
|
509
|
+
timer, now - timer->deadline,
|
510
|
+
timer->closure->scheduler->vtable->name);
|
545
511
|
}
|
546
512
|
timer->pending = false;
|
547
513
|
grpc_timer_heap_pop(&shard->heap);
|
@@ -550,11 +516,11 @@ static grpc_timer *pop_one(timer_shard *shard, gpr_atm now) {
|
|
550
516
|
}
|
551
517
|
|
552
518
|
/* REQUIRES: shard->mu unlocked */
|
553
|
-
static size_t pop_timers(grpc_exec_ctx
|
554
|
-
gpr_atm now, gpr_atm
|
555
|
-
grpc_error
|
519
|
+
static size_t pop_timers(grpc_exec_ctx* exec_ctx, timer_shard* shard,
|
520
|
+
gpr_atm now, gpr_atm* new_min_deadline,
|
521
|
+
grpc_error* error) {
|
556
522
|
size_t n = 0;
|
557
|
-
grpc_timer
|
523
|
+
grpc_timer* timer;
|
558
524
|
gpr_mu_lock(&shard->mu);
|
559
525
|
while ((timer = pop_one(shard, now))) {
|
560
526
|
REMOVE_FROM_HASH_TABLE(timer);
|
@@ -563,19 +529,23 @@ static size_t pop_timers(grpc_exec_ctx *exec_ctx, timer_shard *shard,
|
|
563
529
|
}
|
564
530
|
*new_min_deadline = compute_min_deadline(shard);
|
565
531
|
gpr_mu_unlock(&shard->mu);
|
532
|
+
if (grpc_timer_check_trace.enabled()) {
|
533
|
+
gpr_log(GPR_DEBUG, " .. shard[%d] popped %" PRIdPTR,
|
534
|
+
(int)(shard - g_shards), n);
|
535
|
+
}
|
566
536
|
return n;
|
567
537
|
}
|
568
538
|
|
569
|
-
static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx
|
539
|
+
static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx* exec_ctx,
|
570
540
|
gpr_atm now,
|
571
|
-
gpr_atm
|
572
|
-
grpc_error
|
541
|
+
gpr_atm* next,
|
542
|
+
grpc_error* error) {
|
573
543
|
grpc_timer_check_result result = GRPC_TIMERS_NOT_CHECKED;
|
574
544
|
|
575
545
|
gpr_atm min_timer = gpr_atm_no_barrier_load(&g_shared_mutables.min_timer);
|
576
546
|
gpr_tls_set(&g_last_seen_min_timer, min_timer);
|
577
547
|
if (now < min_timer) {
|
578
|
-
if (next !=
|
548
|
+
if (next != nullptr) *next = GPR_MIN(*next, min_timer);
|
579
549
|
return GRPC_TIMERS_CHECKED_AND_EMPTY;
|
580
550
|
}
|
581
551
|
|
@@ -583,7 +553,7 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx,
|
|
583
553
|
gpr_mu_lock(&g_shared_mutables.mu);
|
584
554
|
result = GRPC_TIMERS_CHECKED_AND_EMPTY;
|
585
555
|
|
586
|
-
if (
|
556
|
+
if (grpc_timer_check_trace.enabled()) {
|
587
557
|
gpr_log(GPR_DEBUG, " .. shard[%d]->min_deadline = %" PRIdPTR,
|
588
558
|
(int)(g_shard_queue[0] - g_shards),
|
589
559
|
g_shard_queue[0]->min_deadline);
|
@@ -601,7 +571,7 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx,
|
|
601
571
|
result = GRPC_TIMERS_FIRED;
|
602
572
|
}
|
603
573
|
|
604
|
-
if (
|
574
|
+
if (grpc_timer_check_trace.enabled()) {
|
605
575
|
gpr_log(GPR_DEBUG,
|
606
576
|
" .. result --> %d"
|
607
577
|
", shard[%d]->min_deadline %" PRIdPTR " --> %" PRIdPTR
|
@@ -634,67 +604,56 @@ static grpc_timer_check_result run_some_expired_timers(grpc_exec_ctx *exec_ctx,
|
|
634
604
|
return result;
|
635
605
|
}
|
636
606
|
|
637
|
-
grpc_timer_check_result grpc_timer_check(grpc_exec_ctx
|
638
|
-
|
607
|
+
grpc_timer_check_result grpc_timer_check(grpc_exec_ctx* exec_ctx,
|
608
|
+
grpc_millis* next) {
|
639
609
|
// prelude
|
640
|
-
|
641
|
-
gpr_atm now_atm = timespec_to_atm_round_down(now);
|
610
|
+
grpc_millis now = grpc_exec_ctx_now(exec_ctx);
|
642
611
|
|
643
612
|
/* fetch from a thread-local first: this avoids contention on a globally
|
644
613
|
mutable cacheline in the common case */
|
645
|
-
|
646
|
-
if (
|
647
|
-
if (next !=
|
648
|
-
*next =
|
649
|
-
atm_to_timespec(GPR_MIN(timespec_to_atm_round_up(*next), min_timer));
|
614
|
+
grpc_millis min_timer = gpr_tls_get(&g_last_seen_min_timer);
|
615
|
+
if (now < min_timer) {
|
616
|
+
if (next != nullptr) {
|
617
|
+
*next = GPR_MIN(*next, min_timer);
|
650
618
|
}
|
651
|
-
if (
|
619
|
+
if (grpc_timer_check_trace.enabled()) {
|
652
620
|
gpr_log(GPR_DEBUG,
|
653
|
-
"TIMER CHECK SKIP:
|
654
|
-
|
621
|
+
"TIMER CHECK SKIP: now=%" PRIdPTR " min_timer=%" PRIdPTR, now,
|
622
|
+
min_timer);
|
655
623
|
}
|
656
624
|
return GRPC_TIMERS_CHECKED_AND_EMPTY;
|
657
625
|
}
|
658
626
|
|
659
|
-
grpc_error
|
660
|
-
|
627
|
+
grpc_error* shutdown_error =
|
628
|
+
now != GRPC_MILLIS_INF_FUTURE
|
661
629
|
? GRPC_ERROR_NONE
|
662
630
|
: GRPC_ERROR_CREATE_FROM_STATIC_STRING("Shutting down timer system");
|
663
631
|
|
664
632
|
// tracing
|
665
|
-
if (
|
666
|
-
char
|
667
|
-
if (next ==
|
633
|
+
if (grpc_timer_check_trace.enabled()) {
|
634
|
+
char* next_str;
|
635
|
+
if (next == nullptr) {
|
668
636
|
next_str = gpr_strdup("NULL");
|
669
637
|
} else {
|
670
|
-
gpr_asprintf(&next_str, "%"
|
671
|
-
next->tv_nsec, timespec_to_atm_round_down(*next));
|
638
|
+
gpr_asprintf(&next_str, "%" PRIdPTR, *next);
|
672
639
|
}
|
673
|
-
gpr_log(GPR_DEBUG,
|
674
|
-
|
675
|
-
|
676
|
-
gpr_tls_get(&g_last_seen_min_timer),
|
640
|
+
gpr_log(GPR_DEBUG,
|
641
|
+
"TIMER CHECK BEGIN: now=%" PRIdPTR " next=%s tls_min=%" PRIdPTR
|
642
|
+
" glob_min=%" PRIdPTR,
|
643
|
+
now, next_str, gpr_tls_get(&g_last_seen_min_timer),
|
677
644
|
gpr_atm_no_barrier_load(&g_shared_mutables.min_timer));
|
678
645
|
gpr_free(next_str);
|
679
646
|
}
|
680
647
|
// actual code
|
681
|
-
grpc_timer_check_result r
|
682
|
-
|
683
|
-
if (next == NULL) {
|
684
|
-
r = run_some_expired_timers(exec_ctx, now_atm, NULL, shutdown_error);
|
685
|
-
} else {
|
686
|
-
next_atm = timespec_to_atm_round_down(*next);
|
687
|
-
r = run_some_expired_timers(exec_ctx, now_atm, &next_atm, shutdown_error);
|
688
|
-
*next = atm_to_timespec(next_atm);
|
689
|
-
}
|
648
|
+
grpc_timer_check_result r =
|
649
|
+
run_some_expired_timers(exec_ctx, now, next, shutdown_error);
|
690
650
|
// tracing
|
691
|
-
if (
|
692
|
-
char
|
693
|
-
if (next ==
|
651
|
+
if (grpc_timer_check_trace.enabled()) {
|
652
|
+
char* next_str;
|
653
|
+
if (next == nullptr) {
|
694
654
|
next_str = gpr_strdup("NULL");
|
695
655
|
} else {
|
696
|
-
gpr_asprintf(&next_str, "%"
|
697
|
-
next->tv_nsec, next_atm);
|
656
|
+
gpr_asprintf(&next_str, "%" PRIdPTR, *next);
|
698
657
|
}
|
699
658
|
gpr_log(GPR_DEBUG, "TIMER CHECK END: r=%d; next=%s", r, next_str);
|
700
659
|
gpr_free(next_str);
|