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
@@ -1,78 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2017 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
|
-
/* Automatically generated nanopb header */
|
19
|
-
/* Generated by nanopb-0.3.7-dev at Fri Jan 20 16:14:22 2017. */
|
20
|
-
|
21
|
-
#ifndef GRPC_CORE_EXT_CENSUS_GEN_TRACE_CONTEXT_PB_H
|
22
|
-
#define GRPC_CORE_EXT_CENSUS_GEN_TRACE_CONTEXT_PB_H
|
23
|
-
#include "third_party/nanopb/pb.h"
|
24
|
-
|
25
|
-
/* @@protoc_insertion_point(includes) */
|
26
|
-
#if PB_PROTO_HEADER_VERSION != 30
|
27
|
-
#error Regenerate this file with the current version of nanopb generator.
|
28
|
-
#endif
|
29
|
-
|
30
|
-
#ifdef __cplusplus
|
31
|
-
extern "C" {
|
32
|
-
#endif
|
33
|
-
|
34
|
-
/* Struct definitions */
|
35
|
-
typedef struct _google_trace_TraceContext {
|
36
|
-
bool has_trace_id_hi;
|
37
|
-
uint64_t trace_id_hi;
|
38
|
-
bool has_trace_id_lo;
|
39
|
-
uint64_t trace_id_lo;
|
40
|
-
bool has_span_id;
|
41
|
-
uint64_t span_id;
|
42
|
-
bool has_span_options;
|
43
|
-
uint32_t span_options;
|
44
|
-
/* @@protoc_insertion_point(struct:google_trace_TraceContext) */
|
45
|
-
} google_trace_TraceContext;
|
46
|
-
|
47
|
-
/* Default values for struct fields */
|
48
|
-
|
49
|
-
/* Initializer values for message structs */
|
50
|
-
#define google_trace_TraceContext_init_default {false, 0, false, 0, false, 0, false, 0}
|
51
|
-
#define google_trace_TraceContext_init_zero {false, 0, false, 0, false, 0, false, 0}
|
52
|
-
|
53
|
-
/* Field tags (for use in manual encoding/decoding) */
|
54
|
-
#define google_trace_TraceContext_trace_id_hi_tag 1
|
55
|
-
#define google_trace_TraceContext_trace_id_lo_tag 2
|
56
|
-
#define google_trace_TraceContext_span_id_tag 3
|
57
|
-
#define google_trace_TraceContext_span_options_tag 4
|
58
|
-
|
59
|
-
/* Struct field encoding specification for nanopb */
|
60
|
-
extern const pb_field_t google_trace_TraceContext_fields[5];
|
61
|
-
|
62
|
-
/* Maximum encoded size of messages (where known) */
|
63
|
-
#define google_trace_TraceContext_size 32
|
64
|
-
|
65
|
-
/* Message IDs (where set with "msgid" option) */
|
66
|
-
#ifdef PB_MSGID
|
67
|
-
|
68
|
-
#define TRACE_CONTEXT_MESSAGES \
|
69
|
-
|
70
|
-
|
71
|
-
#endif
|
72
|
-
|
73
|
-
#ifdef __cplusplus
|
74
|
-
} /* extern "C" */
|
75
|
-
#endif
|
76
|
-
/* @@protoc_insertion_point(eof) */
|
77
|
-
|
78
|
-
#endif /* GRPC_CORE_EXT_CENSUS_GEN_TRACE_CONTEXT_PB_H */
|
@@ -1,196 +0,0 @@
|
|
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 "src/core/ext/census/grpc_filter.h"
|
20
|
-
|
21
|
-
#include <stdio.h>
|
22
|
-
#include <string.h>
|
23
|
-
|
24
|
-
#include <grpc/census.h>
|
25
|
-
#include <grpc/slice.h>
|
26
|
-
#include <grpc/support/alloc.h>
|
27
|
-
#include <grpc/support/log.h>
|
28
|
-
#include <grpc/support/time.h>
|
29
|
-
|
30
|
-
#include "src/core/ext/census/census_interface.h"
|
31
|
-
#include "src/core/ext/census/census_rpc_stats.h"
|
32
|
-
#include "src/core/lib/channel/channel_stack.h"
|
33
|
-
#include "src/core/lib/profiling/timers.h"
|
34
|
-
#include "src/core/lib/transport/static_metadata.h"
|
35
|
-
|
36
|
-
typedef struct call_data {
|
37
|
-
census_op_id op_id;
|
38
|
-
census_context *ctxt;
|
39
|
-
gpr_timespec start_ts;
|
40
|
-
int error;
|
41
|
-
|
42
|
-
/* recv callback */
|
43
|
-
grpc_metadata_batch *recv_initial_metadata;
|
44
|
-
grpc_closure *on_done_recv;
|
45
|
-
grpc_closure finish_recv;
|
46
|
-
} call_data;
|
47
|
-
|
48
|
-
typedef struct channel_data { uint8_t unused; } channel_data;
|
49
|
-
|
50
|
-
static void extract_and_annotate_method_tag(grpc_metadata_batch *md,
|
51
|
-
call_data *calld,
|
52
|
-
channel_data *chand) {
|
53
|
-
grpc_linked_mdelem *m;
|
54
|
-
for (m = md->list.head; m != NULL; m = m->next) {
|
55
|
-
if (grpc_slice_eq(GRPC_MDKEY(m->md), GRPC_MDSTR_PATH)) {
|
56
|
-
/* Add method tag here */
|
57
|
-
}
|
58
|
-
}
|
59
|
-
}
|
60
|
-
|
61
|
-
static void client_mutate_op(grpc_call_element *elem,
|
62
|
-
grpc_transport_stream_op_batch *op) {
|
63
|
-
call_data *calld = (call_data *)elem->call_data;
|
64
|
-
channel_data *chand = (channel_data *)elem->channel_data;
|
65
|
-
if (op->send_initial_metadata) {
|
66
|
-
extract_and_annotate_method_tag(
|
67
|
-
op->payload->send_initial_metadata.send_initial_metadata, calld, chand);
|
68
|
-
}
|
69
|
-
}
|
70
|
-
|
71
|
-
static void client_start_transport_op(grpc_exec_ctx *exec_ctx,
|
72
|
-
grpc_call_element *elem,
|
73
|
-
grpc_transport_stream_op_batch *op) {
|
74
|
-
client_mutate_op(elem, op);
|
75
|
-
grpc_call_next_op(exec_ctx, elem, op);
|
76
|
-
}
|
77
|
-
|
78
|
-
static void server_on_done_recv(grpc_exec_ctx *exec_ctx, void *ptr,
|
79
|
-
grpc_error *error) {
|
80
|
-
GPR_TIMER_BEGIN("census-server:server_on_done_recv", 0);
|
81
|
-
grpc_call_element *elem = (grpc_call_element *)ptr;
|
82
|
-
call_data *calld = (call_data *)elem->call_data;
|
83
|
-
channel_data *chand = (channel_data *)elem->channel_data;
|
84
|
-
if (error == GRPC_ERROR_NONE) {
|
85
|
-
extract_and_annotate_method_tag(calld->recv_initial_metadata, calld, chand);
|
86
|
-
}
|
87
|
-
calld->on_done_recv->cb(exec_ctx, calld->on_done_recv->cb_arg, error);
|
88
|
-
GPR_TIMER_END("census-server:server_on_done_recv", 0);
|
89
|
-
}
|
90
|
-
|
91
|
-
static void server_mutate_op(grpc_call_element *elem,
|
92
|
-
grpc_transport_stream_op_batch *op) {
|
93
|
-
call_data *calld = (call_data *)elem->call_data;
|
94
|
-
if (op->recv_initial_metadata) {
|
95
|
-
/* substitute our callback for the op callback */
|
96
|
-
calld->recv_initial_metadata =
|
97
|
-
op->payload->recv_initial_metadata.recv_initial_metadata;
|
98
|
-
calld->on_done_recv =
|
99
|
-
op->payload->recv_initial_metadata.recv_initial_metadata_ready;
|
100
|
-
op->payload->recv_initial_metadata.recv_initial_metadata_ready =
|
101
|
-
&calld->finish_recv;
|
102
|
-
}
|
103
|
-
}
|
104
|
-
|
105
|
-
static void server_start_transport_op(grpc_exec_ctx *exec_ctx,
|
106
|
-
grpc_call_element *elem,
|
107
|
-
grpc_transport_stream_op_batch *op) {
|
108
|
-
/* TODO(ctiller): this code fails. I don't know why. I expect it's
|
109
|
-
incomplete, and someone should look at it soon.
|
110
|
-
|
111
|
-
call_data *calld = elem->call_data;
|
112
|
-
GPR_ASSERT((calld->op_id.upper != 0) || (calld->op_id.lower != 0)); */
|
113
|
-
server_mutate_op(elem, op);
|
114
|
-
grpc_call_next_op(exec_ctx, elem, op);
|
115
|
-
}
|
116
|
-
|
117
|
-
static grpc_error *client_init_call_elem(grpc_exec_ctx *exec_ctx,
|
118
|
-
grpc_call_element *elem,
|
119
|
-
const grpc_call_element_args *args) {
|
120
|
-
call_data *d = (call_data *)elem->call_data;
|
121
|
-
GPR_ASSERT(d != NULL);
|
122
|
-
memset(d, 0, sizeof(*d));
|
123
|
-
d->start_ts = args->start_time;
|
124
|
-
return GRPC_ERROR_NONE;
|
125
|
-
}
|
126
|
-
|
127
|
-
static void client_destroy_call_elem(grpc_exec_ctx *exec_ctx,
|
128
|
-
grpc_call_element *elem,
|
129
|
-
const grpc_call_final_info *final_info,
|
130
|
-
grpc_closure *ignored) {
|
131
|
-
call_data *d = (call_data *)elem->call_data;
|
132
|
-
GPR_ASSERT(d != NULL);
|
133
|
-
/* TODO(hongyu): record rpc client stats and census_rpc_end_op here */
|
134
|
-
}
|
135
|
-
|
136
|
-
static grpc_error *server_init_call_elem(grpc_exec_ctx *exec_ctx,
|
137
|
-
grpc_call_element *elem,
|
138
|
-
const grpc_call_element_args *args) {
|
139
|
-
call_data *d = (call_data *)elem->call_data;
|
140
|
-
GPR_ASSERT(d != NULL);
|
141
|
-
memset(d, 0, sizeof(*d));
|
142
|
-
d->start_ts = args->start_time;
|
143
|
-
/* TODO(hongyu): call census_tracing_start_op here. */
|
144
|
-
GRPC_CLOSURE_INIT(&d->finish_recv, server_on_done_recv, elem,
|
145
|
-
grpc_schedule_on_exec_ctx);
|
146
|
-
return GRPC_ERROR_NONE;
|
147
|
-
}
|
148
|
-
|
149
|
-
static void server_destroy_call_elem(grpc_exec_ctx *exec_ctx,
|
150
|
-
grpc_call_element *elem,
|
151
|
-
const grpc_call_final_info *final_info,
|
152
|
-
grpc_closure *ignored) {
|
153
|
-
call_data *d = (call_data *)elem->call_data;
|
154
|
-
GPR_ASSERT(d != NULL);
|
155
|
-
/* TODO(hongyu): record rpc server stats and census_tracing_end_op here */
|
156
|
-
}
|
157
|
-
|
158
|
-
static grpc_error *init_channel_elem(grpc_exec_ctx *exec_ctx,
|
159
|
-
grpc_channel_element *elem,
|
160
|
-
grpc_channel_element_args *args) {
|
161
|
-
channel_data *chand = (channel_data *)elem->channel_data;
|
162
|
-
GPR_ASSERT(chand != NULL);
|
163
|
-
return GRPC_ERROR_NONE;
|
164
|
-
}
|
165
|
-
|
166
|
-
static void destroy_channel_elem(grpc_exec_ctx *exec_ctx,
|
167
|
-
grpc_channel_element *elem) {
|
168
|
-
channel_data *chand = (channel_data *)elem->channel_data;
|
169
|
-
GPR_ASSERT(chand != NULL);
|
170
|
-
}
|
171
|
-
|
172
|
-
const grpc_channel_filter grpc_client_census_filter = {
|
173
|
-
client_start_transport_op,
|
174
|
-
grpc_channel_next_op,
|
175
|
-
sizeof(call_data),
|
176
|
-
client_init_call_elem,
|
177
|
-
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
178
|
-
client_destroy_call_elem,
|
179
|
-
sizeof(channel_data),
|
180
|
-
init_channel_elem,
|
181
|
-
destroy_channel_elem,
|
182
|
-
grpc_channel_next_get_info,
|
183
|
-
"census-client"};
|
184
|
-
|
185
|
-
const grpc_channel_filter grpc_server_census_filter = {
|
186
|
-
server_start_transport_op,
|
187
|
-
grpc_channel_next_op,
|
188
|
-
sizeof(call_data),
|
189
|
-
server_init_call_elem,
|
190
|
-
grpc_call_stack_ignore_set_pollset_or_pollset_set,
|
191
|
-
server_destroy_call_elem,
|
192
|
-
sizeof(channel_data),
|
193
|
-
init_channel_elem,
|
194
|
-
destroy_channel_elem,
|
195
|
-
grpc_channel_next_get_info,
|
196
|
-
"census-server"};
|
@@ -1,70 +0,0 @@
|
|
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 <grpc/support/port_platform.h>
|
20
|
-
|
21
|
-
#include <limits.h>
|
22
|
-
#include <string.h>
|
23
|
-
|
24
|
-
#include <grpc/census.h>
|
25
|
-
|
26
|
-
#include "src/core/ext/census/grpc_filter.h"
|
27
|
-
#include "src/core/lib/channel/channel_stack_builder.h"
|
28
|
-
#include "src/core/lib/surface/channel_init.h"
|
29
|
-
|
30
|
-
static bool is_census_enabled(const grpc_channel_args *a) {
|
31
|
-
size_t i;
|
32
|
-
if (a == NULL) return 0;
|
33
|
-
for (i = 0; i < a->num_args; i++) {
|
34
|
-
if (0 == strcmp(a->args[i].key, GRPC_ARG_ENABLE_CENSUS)) {
|
35
|
-
return a->args[i].value.integer != 0 && census_enabled();
|
36
|
-
}
|
37
|
-
}
|
38
|
-
return census_enabled() && !grpc_channel_args_want_minimal_stack(a);
|
39
|
-
}
|
40
|
-
|
41
|
-
static bool maybe_add_census_filter(grpc_exec_ctx *exec_ctx,
|
42
|
-
grpc_channel_stack_builder *builder,
|
43
|
-
void *arg) {
|
44
|
-
const grpc_channel_args *args =
|
45
|
-
grpc_channel_stack_builder_get_channel_arguments(builder);
|
46
|
-
if (is_census_enabled(args)) {
|
47
|
-
return grpc_channel_stack_builder_prepend_filter(
|
48
|
-
builder, (const grpc_channel_filter *)arg, NULL, NULL);
|
49
|
-
}
|
50
|
-
return true;
|
51
|
-
}
|
52
|
-
|
53
|
-
void census_grpc_plugin_init(void) {
|
54
|
-
/* Only initialize census if no one else has and some features are
|
55
|
-
* available. */
|
56
|
-
if (census_enabled() == CENSUS_FEATURE_NONE &&
|
57
|
-
census_supported() != CENSUS_FEATURE_NONE) {
|
58
|
-
if (census_initialize(census_supported())) { /* enable all features. */
|
59
|
-
gpr_log(GPR_ERROR, "Could not initialize census.");
|
60
|
-
}
|
61
|
-
}
|
62
|
-
grpc_channel_init_register_stage(GRPC_CLIENT_CHANNEL, INT_MAX,
|
63
|
-
maybe_add_census_filter,
|
64
|
-
(void *)&grpc_client_census_filter);
|
65
|
-
grpc_channel_init_register_stage(GRPC_SERVER_CHANNEL, INT_MAX,
|
66
|
-
maybe_add_census_filter,
|
67
|
-
(void *)&grpc_server_census_filter);
|
68
|
-
}
|
69
|
-
|
70
|
-
void census_grpc_plugin_shutdown(void) { census_shutdown(); }
|
@@ -1,51 +0,0 @@
|
|
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 <grpc/census.h>
|
20
|
-
#include "src/core/ext/census/base_resources.h"
|
21
|
-
#include "src/core/ext/census/resource.h"
|
22
|
-
|
23
|
-
static int features_enabled = CENSUS_FEATURE_NONE;
|
24
|
-
|
25
|
-
int census_initialize(int features) {
|
26
|
-
if (features_enabled != CENSUS_FEATURE_NONE) {
|
27
|
-
// Must have been a previous call to census_initialize; return error
|
28
|
-
return -1;
|
29
|
-
}
|
30
|
-
features_enabled = features & CENSUS_FEATURE_ALL;
|
31
|
-
if (features & CENSUS_FEATURE_STATS) {
|
32
|
-
initialize_resources();
|
33
|
-
define_base_resources();
|
34
|
-
}
|
35
|
-
|
36
|
-
return features_enabled;
|
37
|
-
}
|
38
|
-
|
39
|
-
void census_shutdown(void) {
|
40
|
-
if (features_enabled & CENSUS_FEATURE_STATS) {
|
41
|
-
shutdown_resources();
|
42
|
-
}
|
43
|
-
features_enabled = CENSUS_FEATURE_NONE;
|
44
|
-
}
|
45
|
-
|
46
|
-
int census_supported(void) {
|
47
|
-
/* TODO(aveitch): improve this as we implement features... */
|
48
|
-
return CENSUS_FEATURE_NONE;
|
49
|
-
}
|
50
|
-
|
51
|
-
int census_enabled(void) { return features_enabled; }
|
@@ -1,305 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2017 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 "src/core/ext/census/intrusive_hash_map.h"
|
20
|
-
#include <string.h>
|
21
|
-
|
22
|
-
extern bool hm_index_compare(const hm_index *A, const hm_index *B);
|
23
|
-
|
24
|
-
/* Simple hashing function that takes lower 32 bits. */
|
25
|
-
static __inline uint32_t chunked_vector_hasher(uint64_t key) {
|
26
|
-
return (uint32_t)key;
|
27
|
-
}
|
28
|
-
|
29
|
-
/* Vector chunks are 1MiB divided by pointer size. */
|
30
|
-
static const size_t VECTOR_CHUNK_SIZE = (1 << 20) / sizeof(void *);
|
31
|
-
|
32
|
-
/* Helper functions which return buckets from the chunked vector. */
|
33
|
-
static __inline void **get_mutable_bucket(const chunked_vector *buckets,
|
34
|
-
uint32_t index) {
|
35
|
-
if (index < VECTOR_CHUNK_SIZE) {
|
36
|
-
return &buckets->first_[index];
|
37
|
-
}
|
38
|
-
size_t rest_index = (index - VECTOR_CHUNK_SIZE) / VECTOR_CHUNK_SIZE;
|
39
|
-
return &buckets->rest_[rest_index][index % VECTOR_CHUNK_SIZE];
|
40
|
-
}
|
41
|
-
|
42
|
-
static __inline void *get_bucket(const chunked_vector *buckets,
|
43
|
-
uint32_t index) {
|
44
|
-
if (index < VECTOR_CHUNK_SIZE) {
|
45
|
-
return buckets->first_[index];
|
46
|
-
}
|
47
|
-
size_t rest_index = (index - VECTOR_CHUNK_SIZE) / VECTOR_CHUNK_SIZE;
|
48
|
-
return buckets->rest_[rest_index][index % VECTOR_CHUNK_SIZE];
|
49
|
-
}
|
50
|
-
|
51
|
-
/* Helper function. */
|
52
|
-
static __inline size_t RestSize(const chunked_vector *vec) {
|
53
|
-
return (vec->size_ <= VECTOR_CHUNK_SIZE)
|
54
|
-
? 0
|
55
|
-
: (vec->size_ - VECTOR_CHUNK_SIZE - 1) / VECTOR_CHUNK_SIZE + 1;
|
56
|
-
}
|
57
|
-
|
58
|
-
/* Initialize chunked vector to size of 0. */
|
59
|
-
static void chunked_vector_init(chunked_vector *vec) {
|
60
|
-
vec->size_ = 0;
|
61
|
-
vec->first_ = NULL;
|
62
|
-
vec->rest_ = NULL;
|
63
|
-
}
|
64
|
-
|
65
|
-
/* Clear chunked vector and free all memory that has been allocated then
|
66
|
-
initialize chunked vector. */
|
67
|
-
static void chunked_vector_clear(chunked_vector *vec) {
|
68
|
-
if (vec->first_ != NULL) {
|
69
|
-
gpr_free(vec->first_);
|
70
|
-
}
|
71
|
-
if (vec->rest_ != NULL) {
|
72
|
-
size_t rest_size = RestSize(vec);
|
73
|
-
for (size_t i = 0; i < rest_size; ++i) {
|
74
|
-
if (vec->rest_[i] != NULL) {
|
75
|
-
gpr_free(vec->rest_[i]);
|
76
|
-
}
|
77
|
-
}
|
78
|
-
gpr_free(vec->rest_);
|
79
|
-
}
|
80
|
-
chunked_vector_init(vec);
|
81
|
-
}
|
82
|
-
|
83
|
-
/* Clear chunked vector and then resize it to n entries. Allow the first 1MB to
|
84
|
-
be read w/o an extra cache miss. The rest of the elements are stored in an
|
85
|
-
array of arrays to avoid large mallocs. */
|
86
|
-
static void chunked_vector_reset(chunked_vector *vec, size_t n) {
|
87
|
-
chunked_vector_clear(vec);
|
88
|
-
vec->size_ = n;
|
89
|
-
if (n <= VECTOR_CHUNK_SIZE) {
|
90
|
-
vec->first_ = (void **)gpr_malloc(sizeof(void *) * n);
|
91
|
-
memset(vec->first_, 0, sizeof(void *) * n);
|
92
|
-
} else {
|
93
|
-
vec->first_ = (void **)gpr_malloc(sizeof(void *) * VECTOR_CHUNK_SIZE);
|
94
|
-
memset(vec->first_, 0, sizeof(void *) * VECTOR_CHUNK_SIZE);
|
95
|
-
size_t rest_size = RestSize(vec);
|
96
|
-
vec->rest_ = (void ***)gpr_malloc(sizeof(void **) * rest_size);
|
97
|
-
memset(vec->rest_, 0, sizeof(void **) * rest_size);
|
98
|
-
int i = 0;
|
99
|
-
n -= VECTOR_CHUNK_SIZE;
|
100
|
-
while (n > 0) {
|
101
|
-
size_t this_size = GPR_MIN(n, VECTOR_CHUNK_SIZE);
|
102
|
-
vec->rest_[i] = (void **)gpr_malloc(sizeof(void *) * this_size);
|
103
|
-
memset(vec->rest_[i], 0, sizeof(void *) * this_size);
|
104
|
-
n -= this_size;
|
105
|
-
++i;
|
106
|
-
}
|
107
|
-
}
|
108
|
-
}
|
109
|
-
|
110
|
-
void intrusive_hash_map_init(intrusive_hash_map *hash_map,
|
111
|
-
uint32_t initial_log2_table_size) {
|
112
|
-
hash_map->log2_num_buckets = initial_log2_table_size;
|
113
|
-
hash_map->num_items = 0;
|
114
|
-
uint32_t num_buckets = (uint32_t)1 << hash_map->log2_num_buckets;
|
115
|
-
hash_map->extend_threshold = num_buckets >> 1;
|
116
|
-
chunked_vector_init(&hash_map->buckets);
|
117
|
-
chunked_vector_reset(&hash_map->buckets, num_buckets);
|
118
|
-
hash_map->hash_mask = num_buckets - 1;
|
119
|
-
}
|
120
|
-
|
121
|
-
bool intrusive_hash_map_empty(const intrusive_hash_map *hash_map) {
|
122
|
-
return hash_map->num_items == 0;
|
123
|
-
}
|
124
|
-
|
125
|
-
size_t intrusive_hash_map_size(const intrusive_hash_map *hash_map) {
|
126
|
-
return hash_map->num_items;
|
127
|
-
}
|
128
|
-
|
129
|
-
void intrusive_hash_map_end(const intrusive_hash_map *hash_map, hm_index *idx) {
|
130
|
-
idx->bucket_index = (uint32_t)hash_map->buckets.size_;
|
131
|
-
GPR_ASSERT(idx->bucket_index <= UINT32_MAX);
|
132
|
-
idx->item = NULL;
|
133
|
-
}
|
134
|
-
|
135
|
-
void intrusive_hash_map_next(const intrusive_hash_map *hash_map,
|
136
|
-
hm_index *idx) {
|
137
|
-
idx->item = idx->item->hash_link;
|
138
|
-
while (idx->item == NULL) {
|
139
|
-
idx->bucket_index++;
|
140
|
-
if (idx->bucket_index >= hash_map->buckets.size_) {
|
141
|
-
/* Reached end of table. */
|
142
|
-
idx->item = NULL;
|
143
|
-
return;
|
144
|
-
}
|
145
|
-
idx->item = (hm_item *)get_bucket(&hash_map->buckets, idx->bucket_index);
|
146
|
-
}
|
147
|
-
}
|
148
|
-
|
149
|
-
void intrusive_hash_map_begin(const intrusive_hash_map *hash_map,
|
150
|
-
hm_index *idx) {
|
151
|
-
for (uint32_t i = 0; i < hash_map->buckets.size_; ++i) {
|
152
|
-
if (get_bucket(&hash_map->buckets, i) != NULL) {
|
153
|
-
idx->bucket_index = i;
|
154
|
-
idx->item = (hm_item *)get_bucket(&hash_map->buckets, i);
|
155
|
-
return;
|
156
|
-
}
|
157
|
-
}
|
158
|
-
intrusive_hash_map_end(hash_map, idx);
|
159
|
-
}
|
160
|
-
|
161
|
-
hm_item *intrusive_hash_map_find(const intrusive_hash_map *hash_map,
|
162
|
-
uint64_t key) {
|
163
|
-
uint32_t index = chunked_vector_hasher(key) & hash_map->hash_mask;
|
164
|
-
|
165
|
-
hm_item *p = (hm_item *)get_bucket(&hash_map->buckets, index);
|
166
|
-
while (p != NULL) {
|
167
|
-
if (key == p->key) {
|
168
|
-
return p;
|
169
|
-
}
|
170
|
-
p = p->hash_link;
|
171
|
-
}
|
172
|
-
return NULL;
|
173
|
-
}
|
174
|
-
|
175
|
-
hm_item *intrusive_hash_map_erase(intrusive_hash_map *hash_map, uint64_t key) {
|
176
|
-
uint32_t index = chunked_vector_hasher(key) & hash_map->hash_mask;
|
177
|
-
|
178
|
-
hm_item **slot = (hm_item **)get_mutable_bucket(&hash_map->buckets, index);
|
179
|
-
hm_item *p = *slot;
|
180
|
-
if (p == NULL) {
|
181
|
-
return NULL;
|
182
|
-
}
|
183
|
-
|
184
|
-
if (key == p->key) {
|
185
|
-
*slot = p->hash_link;
|
186
|
-
p->hash_link = NULL;
|
187
|
-
hash_map->num_items--;
|
188
|
-
return p;
|
189
|
-
}
|
190
|
-
|
191
|
-
hm_item *prev = p;
|
192
|
-
p = p->hash_link;
|
193
|
-
|
194
|
-
while (p) {
|
195
|
-
if (key == p->key) {
|
196
|
-
prev->hash_link = p->hash_link;
|
197
|
-
p->hash_link = NULL;
|
198
|
-
hash_map->num_items--;
|
199
|
-
return p;
|
200
|
-
}
|
201
|
-
prev = p;
|
202
|
-
p = p->hash_link;
|
203
|
-
}
|
204
|
-
return NULL;
|
205
|
-
}
|
206
|
-
|
207
|
-
/* Insert an hm_item* into the underlying chunked vector. hash_mask is
|
208
|
-
* array_size-1. Returns true if it is a new hm_item and false if the hm_item
|
209
|
-
* already existed.
|
210
|
-
*/
|
211
|
-
static __inline bool intrusive_hash_map_internal_insert(chunked_vector *buckets,
|
212
|
-
uint32_t hash_mask,
|
213
|
-
hm_item *item) {
|
214
|
-
const uint64_t key = item->key;
|
215
|
-
uint32_t index = chunked_vector_hasher(key) & hash_mask;
|
216
|
-
hm_item **slot = (hm_item **)get_mutable_bucket(buckets, index);
|
217
|
-
hm_item *p = *slot;
|
218
|
-
item->hash_link = p;
|
219
|
-
|
220
|
-
/* Check to see if key already exists. */
|
221
|
-
while (p) {
|
222
|
-
if (p->key == key) {
|
223
|
-
return false;
|
224
|
-
}
|
225
|
-
p = p->hash_link;
|
226
|
-
}
|
227
|
-
|
228
|
-
/* Otherwise add new entry. */
|
229
|
-
*slot = item;
|
230
|
-
return true;
|
231
|
-
}
|
232
|
-
|
233
|
-
/* Extend the allocated number of elements in the hash map by a factor of 2. */
|
234
|
-
void intrusive_hash_map_extend(intrusive_hash_map *hash_map) {
|
235
|
-
uint32_t new_log2_num_buckets = 1 + hash_map->log2_num_buckets;
|
236
|
-
uint32_t new_num_buckets = (uint32_t)1 << new_log2_num_buckets;
|
237
|
-
GPR_ASSERT(new_num_buckets <= UINT32_MAX && new_num_buckets > 0);
|
238
|
-
chunked_vector new_buckets;
|
239
|
-
chunked_vector_init(&new_buckets);
|
240
|
-
chunked_vector_reset(&new_buckets, new_num_buckets);
|
241
|
-
uint32_t new_hash_mask = new_num_buckets - 1;
|
242
|
-
|
243
|
-
hm_index cur_idx;
|
244
|
-
hm_index end_idx;
|
245
|
-
intrusive_hash_map_end(hash_map, &end_idx);
|
246
|
-
intrusive_hash_map_begin(hash_map, &cur_idx);
|
247
|
-
while (!hm_index_compare(&cur_idx, &end_idx)) {
|
248
|
-
hm_item *new_item = cur_idx.item;
|
249
|
-
intrusive_hash_map_next(hash_map, &cur_idx);
|
250
|
-
intrusive_hash_map_internal_insert(&new_buckets, new_hash_mask, new_item);
|
251
|
-
}
|
252
|
-
|
253
|
-
/* Set values for new chunked_vector. extend_threshold is set to half of
|
254
|
-
* new_num_buckets. */
|
255
|
-
hash_map->log2_num_buckets = new_log2_num_buckets;
|
256
|
-
chunked_vector_clear(&hash_map->buckets);
|
257
|
-
hash_map->buckets = new_buckets;
|
258
|
-
hash_map->hash_mask = new_hash_mask;
|
259
|
-
hash_map->extend_threshold = new_num_buckets >> 1;
|
260
|
-
}
|
261
|
-
|
262
|
-
/* Insert a hm_item. The hm_item must remain live until it is removed from the
|
263
|
-
table. This object does not take the ownership of hm_item. The caller must
|
264
|
-
remove this hm_item from the table and delete it before this table is
|
265
|
-
deleted. If hm_item exists already num_items is not changed. */
|
266
|
-
bool intrusive_hash_map_insert(intrusive_hash_map *hash_map, hm_item *item) {
|
267
|
-
if (hash_map->num_items >= hash_map->extend_threshold) {
|
268
|
-
intrusive_hash_map_extend(hash_map);
|
269
|
-
}
|
270
|
-
if (intrusive_hash_map_internal_insert(&hash_map->buckets,
|
271
|
-
hash_map->hash_mask, item)) {
|
272
|
-
hash_map->num_items++;
|
273
|
-
return true;
|
274
|
-
}
|
275
|
-
return false;
|
276
|
-
}
|
277
|
-
|
278
|
-
void intrusive_hash_map_clear(intrusive_hash_map *hash_map,
|
279
|
-
void (*free_object)(void *)) {
|
280
|
-
hm_index cur;
|
281
|
-
hm_index end;
|
282
|
-
intrusive_hash_map_end(hash_map, &end);
|
283
|
-
intrusive_hash_map_begin(hash_map, &cur);
|
284
|
-
|
285
|
-
while (!hm_index_compare(&cur, &end)) {
|
286
|
-
hm_index next = cur;
|
287
|
-
intrusive_hash_map_next(hash_map, &next);
|
288
|
-
if (cur.item != NULL) {
|
289
|
-
hm_item *item = intrusive_hash_map_erase(hash_map, cur.item->key);
|
290
|
-
(*free_object)((void *)item);
|
291
|
-
gpr_free(item);
|
292
|
-
}
|
293
|
-
cur = next;
|
294
|
-
}
|
295
|
-
}
|
296
|
-
|
297
|
-
void intrusive_hash_map_free(intrusive_hash_map *hash_map,
|
298
|
-
void (*free_object)(void *)) {
|
299
|
-
intrusive_hash_map_clear(hash_map, (*free_object));
|
300
|
-
hash_map->num_items = 0;
|
301
|
-
hash_map->extend_threshold = 0;
|
302
|
-
hash_map->log2_num_buckets = 0;
|
303
|
-
hash_map->hash_mask = 0;
|
304
|
-
chunked_vector_clear(&hash_map->buckets);
|
305
|
-
}
|