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
data/src/core/lib/http/parser.h
CHANGED
@@ -27,10 +27,14 @@
|
|
27
27
|
/* Maximum length of a header string of the form 'Key: Value\r\n' */
|
28
28
|
#define GRPC_HTTP_PARSER_MAX_HEADER_LENGTH 4096
|
29
29
|
|
30
|
+
#ifdef __cplusplus
|
31
|
+
extern "C" {
|
32
|
+
#endif
|
33
|
+
|
30
34
|
/* A single header to be passed in a request */
|
31
35
|
typedef struct grpc_http_header {
|
32
|
-
char
|
33
|
-
char
|
36
|
+
char* key;
|
37
|
+
char* value;
|
34
38
|
} grpc_http_header;
|
35
39
|
|
36
40
|
typedef enum {
|
@@ -53,17 +57,17 @@ typedef enum {
|
|
53
57
|
/* A request */
|
54
58
|
typedef struct grpc_http_request {
|
55
59
|
/* Method of the request (e.g. GET, POST) */
|
56
|
-
char
|
60
|
+
char* method;
|
57
61
|
/* The path of the resource to fetch */
|
58
|
-
char
|
62
|
+
char* path;
|
59
63
|
/* HTTP version to use */
|
60
64
|
grpc_http_version version;
|
61
65
|
/* Headers attached to the request */
|
62
66
|
size_t hdr_count;
|
63
|
-
grpc_http_header
|
67
|
+
grpc_http_header* hdrs;
|
64
68
|
/* Body: length and contents; contents are NOT null-terminated */
|
65
69
|
size_t body_length;
|
66
|
-
char
|
70
|
+
char* body;
|
67
71
|
} grpc_http_request;
|
68
72
|
|
69
73
|
/* A response */
|
@@ -72,10 +76,10 @@ typedef struct grpc_http_response {
|
|
72
76
|
int status;
|
73
77
|
/* Headers: count and key/values */
|
74
78
|
size_t hdr_count;
|
75
|
-
grpc_http_header
|
79
|
+
grpc_http_header* hdrs;
|
76
80
|
/* Body: length and contents; contents are NOT null-terminated */
|
77
81
|
size_t body_length;
|
78
|
-
char
|
82
|
+
char* body;
|
79
83
|
} grpc_http_response;
|
80
84
|
|
81
85
|
typedef struct {
|
@@ -83,9 +87,9 @@ typedef struct {
|
|
83
87
|
grpc_http_type type;
|
84
88
|
|
85
89
|
union {
|
86
|
-
grpc_http_response
|
87
|
-
grpc_http_request
|
88
|
-
void
|
90
|
+
grpc_http_response* response;
|
91
|
+
grpc_http_request* request;
|
92
|
+
void* request_or_response;
|
89
93
|
} http;
|
90
94
|
size_t body_capacity;
|
91
95
|
size_t hdr_capacity;
|
@@ -95,18 +99,22 @@ typedef struct {
|
|
95
99
|
size_t cur_line_end_length;
|
96
100
|
} grpc_http_parser;
|
97
101
|
|
98
|
-
void grpc_http_parser_init(grpc_http_parser
|
99
|
-
void
|
100
|
-
void grpc_http_parser_destroy(grpc_http_parser
|
102
|
+
void grpc_http_parser_init(grpc_http_parser* parser, grpc_http_type type,
|
103
|
+
void* request_or_response);
|
104
|
+
void grpc_http_parser_destroy(grpc_http_parser* parser);
|
101
105
|
|
102
106
|
/* Sets \a start_of_body to the offset in \a slice of the start of the body. */
|
103
|
-
grpc_error
|
104
|
-
size_t
|
105
|
-
grpc_error
|
107
|
+
grpc_error* grpc_http_parser_parse(grpc_http_parser* parser, grpc_slice slice,
|
108
|
+
size_t* start_of_body);
|
109
|
+
grpc_error* grpc_http_parser_eof(grpc_http_parser* parser);
|
110
|
+
|
111
|
+
void grpc_http_request_destroy(grpc_http_request* request);
|
112
|
+
void grpc_http_response_destroy(grpc_http_response* response);
|
106
113
|
|
107
|
-
|
108
|
-
void grpc_http_response_destroy(grpc_http_response *response);
|
114
|
+
extern grpc_core::TraceFlag grpc_http1_trace;
|
109
115
|
|
110
|
-
|
116
|
+
#ifdef __cplusplus
|
117
|
+
}
|
118
|
+
#endif
|
111
119
|
|
112
120
|
#endif /* GRPC_CORE_LIB_HTTP_PARSER_H */
|
@@ -16,8 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H
|
20
|
+
#define GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H
|
21
21
|
|
22
22
|
#ifdef __cplusplus
|
23
23
|
extern "C" {
|
@@ -39,17 +39,26 @@ void gpr_thd_end_blocking_region();
|
|
39
39
|
do { \
|
40
40
|
gpr_thd_start_blocking_region(); \
|
41
41
|
} while (0)
|
42
|
-
#define
|
43
|
-
do {
|
44
|
-
gpr_thd_end_blocking_region();
|
42
|
+
#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \
|
43
|
+
do { \
|
44
|
+
gpr_thd_end_blocking_region(); \
|
45
|
+
} while (0)
|
46
|
+
#define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(ec) \
|
47
|
+
do { \
|
48
|
+
gpr_thd_end_blocking_region(); \
|
49
|
+
grpc_exec_ctx_invalidate_now((ec)); \
|
45
50
|
} while (0)
|
46
51
|
#else
|
47
52
|
#define GRPC_SCHEDULING_START_BLOCKING_REGION \
|
48
53
|
do { \
|
49
54
|
} while (0)
|
50
|
-
#define
|
51
|
-
do {
|
55
|
+
#define GRPC_SCHEDULING_END_BLOCKING_REGION_NO_EXEC_CTX \
|
56
|
+
do { \
|
57
|
+
} while (0)
|
58
|
+
#define GRPC_SCHEDULING_END_BLOCKING_REGION_WITH_EXEC_CTX(ec) \
|
59
|
+
do { \
|
60
|
+
grpc_exec_ctx_invalidate_now((ec)); \
|
52
61
|
} while (0)
|
53
62
|
#endif
|
54
63
|
|
55
|
-
#endif /*
|
64
|
+
#endif /* GRPC_CORE_LIB_IOMGR_BLOCK_ANNOTATE_H */
|
@@ -18,10 +18,13 @@
|
|
18
18
|
|
19
19
|
#include "src/core/lib/iomgr/call_combiner.h"
|
20
20
|
|
21
|
+
#include <inttypes.h>
|
22
|
+
|
21
23
|
#include <grpc/support/log.h>
|
24
|
+
#include "src/core/lib/debug/stats.h"
|
25
|
+
#include "src/core/lib/profiling/timers.h"
|
22
26
|
|
23
|
-
|
24
|
-
GRPC_TRACER_INITIALIZER(false, "call_combiner");
|
27
|
+
grpc_core::TraceFlag grpc_call_combiner_trace(false, "call_combiner");
|
25
28
|
|
26
29
|
static grpc_error* decode_cancel_state_error(gpr_atm cancel_state) {
|
27
30
|
if (cancel_state & 1) {
|
@@ -58,7 +61,8 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx,
|
|
58
61
|
grpc_closure* closure,
|
59
62
|
grpc_error* error DEBUG_ARGS,
|
60
63
|
const char* reason) {
|
61
|
-
|
64
|
+
GPR_TIMER_BEGIN("call_combiner_start", 0);
|
65
|
+
if (grpc_call_combiner_trace.enabled()) {
|
62
66
|
gpr_log(GPR_DEBUG,
|
63
67
|
"==> grpc_call_combiner_start() [%p] closure=%p [" DEBUG_FMT_STR
|
64
68
|
"%s] error=%s",
|
@@ -67,72 +71,79 @@ void grpc_call_combiner_start(grpc_exec_ctx* exec_ctx,
|
|
67
71
|
}
|
68
72
|
size_t prev_size =
|
69
73
|
(size_t)gpr_atm_full_fetch_add(&call_combiner->size, (gpr_atm)1);
|
70
|
-
if (
|
74
|
+
if (grpc_call_combiner_trace.enabled()) {
|
71
75
|
gpr_log(GPR_DEBUG, " size: %" PRIdPTR " -> %" PRIdPTR, prev_size,
|
72
76
|
prev_size + 1);
|
73
77
|
}
|
78
|
+
GRPC_STATS_INC_CALL_COMBINER_LOCKS_SCHEDULED_ITEMS(exec_ctx);
|
74
79
|
if (prev_size == 0) {
|
75
|
-
|
80
|
+
GRPC_STATS_INC_CALL_COMBINER_LOCKS_INITIATED(exec_ctx);
|
81
|
+
GPR_TIMER_MARK("call_combiner_initiate", 0);
|
82
|
+
if (grpc_call_combiner_trace.enabled()) {
|
76
83
|
gpr_log(GPR_DEBUG, " EXECUTING IMMEDIATELY");
|
77
84
|
}
|
78
85
|
// Queue was empty, so execute this closure immediately.
|
79
86
|
GRPC_CLOSURE_SCHED(exec_ctx, closure, error);
|
80
87
|
} else {
|
81
|
-
if (
|
88
|
+
if (grpc_call_combiner_trace.enabled()) {
|
82
89
|
gpr_log(GPR_INFO, " QUEUING");
|
83
90
|
}
|
84
91
|
// Queue was not empty, so add closure to queue.
|
85
92
|
closure->error_data.error = error;
|
86
93
|
gpr_mpscq_push(&call_combiner->queue, (gpr_mpscq_node*)closure);
|
87
94
|
}
|
95
|
+
GPR_TIMER_END("call_combiner_start", 0);
|
88
96
|
}
|
89
97
|
|
90
98
|
void grpc_call_combiner_stop(grpc_exec_ctx* exec_ctx,
|
91
99
|
grpc_call_combiner* call_combiner DEBUG_ARGS,
|
92
100
|
const char* reason) {
|
93
|
-
|
101
|
+
GPR_TIMER_BEGIN("call_combiner_stop", 0);
|
102
|
+
if (grpc_call_combiner_trace.enabled()) {
|
94
103
|
gpr_log(GPR_DEBUG,
|
95
104
|
"==> grpc_call_combiner_stop() [%p] [" DEBUG_FMT_STR "%s]",
|
96
105
|
call_combiner DEBUG_FMT_ARGS, reason);
|
97
106
|
}
|
98
107
|
size_t prev_size =
|
99
108
|
(size_t)gpr_atm_full_fetch_add(&call_combiner->size, (gpr_atm)-1);
|
100
|
-
if (
|
109
|
+
if (grpc_call_combiner_trace.enabled()) {
|
101
110
|
gpr_log(GPR_DEBUG, " size: %" PRIdPTR " -> %" PRIdPTR, prev_size,
|
102
111
|
prev_size - 1);
|
103
112
|
}
|
104
113
|
GPR_ASSERT(prev_size >= 1);
|
105
114
|
if (prev_size > 1) {
|
106
115
|
while (true) {
|
107
|
-
if (
|
116
|
+
if (grpc_call_combiner_trace.enabled()) {
|
108
117
|
gpr_log(GPR_DEBUG, " checking queue");
|
109
118
|
}
|
110
119
|
bool empty;
|
111
120
|
grpc_closure* closure = (grpc_closure*)gpr_mpscq_pop_and_check_end(
|
112
121
|
&call_combiner->queue, &empty);
|
113
|
-
if (closure ==
|
122
|
+
if (closure == nullptr) {
|
114
123
|
// This can happen either due to a race condition within the mpscq
|
115
124
|
// code or because of a race with grpc_call_combiner_start().
|
116
|
-
if (
|
125
|
+
if (grpc_call_combiner_trace.enabled()) {
|
117
126
|
gpr_log(GPR_DEBUG, " queue returned no result; checking again");
|
118
127
|
}
|
119
128
|
continue;
|
120
129
|
}
|
121
|
-
if (
|
130
|
+
if (grpc_call_combiner_trace.enabled()) {
|
122
131
|
gpr_log(GPR_DEBUG, " EXECUTING FROM QUEUE: closure=%p error=%s",
|
123
132
|
closure, grpc_error_string(closure->error_data.error));
|
124
133
|
}
|
125
134
|
GRPC_CLOSURE_SCHED(exec_ctx, closure, closure->error_data.error);
|
126
135
|
break;
|
127
136
|
}
|
128
|
-
} else if (
|
137
|
+
} else if (grpc_call_combiner_trace.enabled()) {
|
129
138
|
gpr_log(GPR_DEBUG, " queue empty");
|
130
139
|
}
|
140
|
+
GPR_TIMER_END("call_combiner_stop", 0);
|
131
141
|
}
|
132
142
|
|
133
143
|
void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
|
134
144
|
grpc_call_combiner* call_combiner,
|
135
145
|
grpc_closure* closure) {
|
146
|
+
GRPC_STATS_INC_CALL_COMBINER_SET_NOTIFY_ON_CANCEL(exec_ctx);
|
136
147
|
while (true) {
|
137
148
|
// Decode original state.
|
138
149
|
gpr_atm original_state = gpr_atm_acq_load(&call_combiner->cancel_state);
|
@@ -140,7 +151,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
|
|
140
151
|
// If error is set, invoke the cancellation closure immediately.
|
141
152
|
// Otherwise, store the new closure.
|
142
153
|
if (original_error != GRPC_ERROR_NONE) {
|
143
|
-
if (
|
154
|
+
if (grpc_call_combiner_trace.enabled()) {
|
144
155
|
gpr_log(GPR_DEBUG,
|
145
156
|
"call_combiner=%p: scheduling notify_on_cancel callback=%p "
|
146
157
|
"for pre-existing cancellation",
|
@@ -151,7 +162,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
|
|
151
162
|
} else {
|
152
163
|
if (gpr_atm_full_cas(&call_combiner->cancel_state, original_state,
|
153
164
|
(gpr_atm)closure)) {
|
154
|
-
if (
|
165
|
+
if (grpc_call_combiner_trace.enabled()) {
|
155
166
|
gpr_log(GPR_DEBUG, "call_combiner=%p: setting notify_on_cancel=%p",
|
156
167
|
call_combiner, closure);
|
157
168
|
}
|
@@ -160,7 +171,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
|
|
160
171
|
// up any resources they may be holding for the callback.
|
161
172
|
if (original_state != 0) {
|
162
173
|
closure = (grpc_closure*)original_state;
|
163
|
-
if (
|
174
|
+
if (grpc_call_combiner_trace.enabled()) {
|
164
175
|
gpr_log(GPR_DEBUG,
|
165
176
|
"call_combiner=%p: scheduling old cancel callback=%p",
|
166
177
|
call_combiner, closure);
|
@@ -177,6 +188,7 @@ void grpc_call_combiner_set_notify_on_cancel(grpc_exec_ctx* exec_ctx,
|
|
177
188
|
void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx,
|
178
189
|
grpc_call_combiner* call_combiner,
|
179
190
|
grpc_error* error) {
|
191
|
+
GRPC_STATS_INC_CALL_COMBINER_CANCELLED(exec_ctx);
|
180
192
|
while (true) {
|
181
193
|
gpr_atm original_state = gpr_atm_acq_load(&call_combiner->cancel_state);
|
182
194
|
grpc_error* original_error = decode_cancel_state_error(original_state);
|
@@ -188,7 +200,7 @@ void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx,
|
|
188
200
|
encode_cancel_state_error(error))) {
|
189
201
|
if (original_state != 0) {
|
190
202
|
grpc_closure* notify_on_cancel = (grpc_closure*)original_state;
|
191
|
-
if (
|
203
|
+
if (grpc_call_combiner_trace.enabled()) {
|
192
204
|
gpr_log(GPR_DEBUG,
|
193
205
|
"call_combiner=%p: scheduling notify_on_cancel callback=%p",
|
194
206
|
call_combiner, notify_on_cancel);
|
@@ -27,6 +27,10 @@
|
|
27
27
|
#include "src/core/lib/iomgr/exec_ctx.h"
|
28
28
|
#include "src/core/lib/support/mpscq.h"
|
29
29
|
|
30
|
+
#ifdef __cplusplus
|
31
|
+
extern "C" {
|
32
|
+
#endif
|
33
|
+
|
30
34
|
// A simple, lock-free mechanism for serializing activity related to a
|
31
35
|
// single call. This is similar to a combiner but is more lightweight.
|
32
36
|
//
|
@@ -36,7 +40,7 @@
|
|
36
40
|
// when it is done with the action that was kicked off by the original
|
37
41
|
// callback.
|
38
42
|
|
39
|
-
extern
|
43
|
+
extern grpc_core::TraceFlag grpc_call_combiner_trace;
|
40
44
|
|
41
45
|
typedef struct {
|
42
46
|
gpr_atm size; // size_t, num closures in queue or currently executing
|
@@ -118,4 +122,8 @@ void grpc_call_combiner_cancel(grpc_exec_ctx* exec_ctx,
|
|
118
122
|
grpc_call_combiner* call_combiner,
|
119
123
|
grpc_error* error);
|
120
124
|
|
125
|
+
#ifdef __cplusplus
|
126
|
+
}
|
127
|
+
#endif
|
128
|
+
|
121
129
|
#endif /* GRPC_CORE_LIB_IOMGR_CALL_COMBINER_H */
|
@@ -21,25 +21,23 @@
|
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
|
+
#include <assert.h>
|
24
25
|
#include <grpc/impl/codegen/exec_ctx_fwd.h>
|
26
|
+
#include <grpc/support/alloc.h>
|
27
|
+
#include <grpc/support/log.h>
|
25
28
|
#include <stdbool.h>
|
26
29
|
#include "src/core/lib/iomgr/error.h"
|
30
|
+
#include "src/core/lib/profiling/timers.h"
|
27
31
|
#include "src/core/lib/support/mpscq.h"
|
28
32
|
|
29
|
-
#ifdef __cplusplus
|
30
|
-
extern "C" {
|
31
|
-
#endif
|
32
|
-
|
33
33
|
struct grpc_closure;
|
34
34
|
typedef struct grpc_closure grpc_closure;
|
35
35
|
|
36
|
-
|
37
|
-
extern grpc_tracer_flag grpc_trace_closure;
|
38
|
-
#endif
|
36
|
+
extern grpc_core::DebugOnlyTraceFlag grpc_trace_closure;
|
39
37
|
|
40
38
|
typedef struct grpc_closure_list {
|
41
|
-
grpc_closure
|
42
|
-
grpc_closure
|
39
|
+
grpc_closure* head;
|
40
|
+
grpc_closure* tail;
|
43
41
|
} grpc_closure_list;
|
44
42
|
|
45
43
|
/** gRPC Callback definition.
|
@@ -49,24 +47,24 @@ typedef struct grpc_closure_list {
|
|
49
47
|
* describing what went wrong.
|
50
48
|
* Error contract: it is not the cb's job to unref this error;
|
51
49
|
* the closure scheduler will do that after the cb returns */
|
52
|
-
typedef void (*grpc_iomgr_cb_func)(grpc_exec_ctx
|
53
|
-
grpc_error
|
50
|
+
typedef void (*grpc_iomgr_cb_func)(grpc_exec_ctx* exec_ctx, void* arg,
|
51
|
+
grpc_error* error);
|
54
52
|
|
55
53
|
typedef struct grpc_closure_scheduler grpc_closure_scheduler;
|
56
54
|
|
57
55
|
typedef struct grpc_closure_scheduler_vtable {
|
58
56
|
/* NOTE: for all these functions, closure->scheduler == the scheduler that was
|
59
57
|
used to find this vtable */
|
60
|
-
void (*run)(grpc_exec_ctx
|
61
|
-
grpc_error
|
62
|
-
void (*sched)(grpc_exec_ctx
|
63
|
-
grpc_error
|
64
|
-
const char
|
58
|
+
void (*run)(grpc_exec_ctx* exec_ctx, grpc_closure* closure,
|
59
|
+
grpc_error* error);
|
60
|
+
void (*sched)(grpc_exec_ctx* exec_ctx, grpc_closure* closure,
|
61
|
+
grpc_error* error);
|
62
|
+
const char* name;
|
65
63
|
} grpc_closure_scheduler_vtable;
|
66
64
|
|
67
65
|
/** Abstract type that can schedule closures for execution */
|
68
66
|
struct grpc_closure_scheduler {
|
69
|
-
const grpc_closure_scheduler_vtable
|
67
|
+
const grpc_closure_scheduler_vtable* vtable;
|
70
68
|
};
|
71
69
|
|
72
70
|
/** A closure over a grpc_iomgr_cb_func. */
|
@@ -74,7 +72,7 @@ struct grpc_closure {
|
|
74
72
|
/** Once queued, next indicates the next queued closure; before then, scratch
|
75
73
|
* space */
|
76
74
|
union {
|
77
|
-
grpc_closure
|
75
|
+
grpc_closure* next;
|
78
76
|
gpr_mpscq_node atm_next;
|
79
77
|
uintptr_t scratch;
|
80
78
|
} next_data;
|
@@ -83,15 +81,15 @@ struct grpc_closure {
|
|
83
81
|
grpc_iomgr_cb_func cb;
|
84
82
|
|
85
83
|
/** Arguments to be passed to "cb". */
|
86
|
-
void
|
84
|
+
void* cb_arg;
|
87
85
|
|
88
|
-
/** Scheduler to schedule against:
|
89
|
-
|
90
|
-
grpc_closure_scheduler
|
86
|
+
/** Scheduler to schedule against: nullptr to schedule against current
|
87
|
+
execution context */
|
88
|
+
grpc_closure_scheduler* scheduler;
|
91
89
|
|
92
90
|
/** Once queued, the result of the closure. Before then: scratch space */
|
93
91
|
union {
|
94
|
-
grpc_error
|
92
|
+
grpc_error* error;
|
95
93
|
uintptr_t scratch;
|
96
94
|
} error_data;
|
97
95
|
|
@@ -100,109 +98,269 @@ struct grpc_closure {
|
|
100
98
|
#ifndef NDEBUG
|
101
99
|
bool scheduled;
|
102
100
|
bool run; // true = run, false = scheduled
|
103
|
-
const char
|
101
|
+
const char* file_created;
|
104
102
|
int line_created;
|
105
|
-
const char
|
103
|
+
const char* file_initiated;
|
106
104
|
int line_initiated;
|
107
105
|
#endif
|
108
106
|
};
|
109
107
|
|
108
|
+
#ifndef NDEBUG
|
109
|
+
inline grpc_closure* grpc_closure_init(const char* file, int line,
|
110
|
+
grpc_closure* closure,
|
111
|
+
grpc_iomgr_cb_func cb, void* cb_arg,
|
112
|
+
grpc_closure_scheduler* scheduler) {
|
113
|
+
#else
|
114
|
+
inline grpc_closure* grpc_closure_init(grpc_closure* closure,
|
115
|
+
grpc_iomgr_cb_func cb, void* cb_arg,
|
116
|
+
grpc_closure_scheduler* scheduler) {
|
117
|
+
#endif
|
118
|
+
closure->cb = cb;
|
119
|
+
closure->cb_arg = cb_arg;
|
120
|
+
closure->scheduler = scheduler;
|
121
|
+
#ifndef NDEBUG
|
122
|
+
closure->scheduled = false;
|
123
|
+
closure->file_initiated = nullptr;
|
124
|
+
closure->line_initiated = 0;
|
125
|
+
closure->run = false;
|
126
|
+
closure->file_created = file;
|
127
|
+
closure->line_created = line;
|
128
|
+
#endif
|
129
|
+
return closure;
|
130
|
+
}
|
131
|
+
|
110
132
|
/** Initializes \a closure with \a cb and \a cb_arg. Returns \a closure. */
|
111
133
|
#ifndef NDEBUG
|
112
|
-
grpc_closure *grpc_closure_init(const char *file, int line,
|
113
|
-
grpc_closure *closure, grpc_iomgr_cb_func cb,
|
114
|
-
void *cb_arg,
|
115
|
-
grpc_closure_scheduler *scheduler);
|
116
134
|
#define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler) \
|
117
135
|
grpc_closure_init(__FILE__, __LINE__, closure, cb, cb_arg, scheduler)
|
118
136
|
#else
|
119
|
-
grpc_closure *grpc_closure_init(grpc_closure *closure, grpc_iomgr_cb_func cb,
|
120
|
-
void *cb_arg,
|
121
|
-
grpc_closure_scheduler *scheduler);
|
122
137
|
#define GRPC_CLOSURE_INIT(closure, cb, cb_arg, scheduler) \
|
123
138
|
grpc_closure_init(closure, cb, cb_arg, scheduler)
|
124
139
|
#endif
|
125
140
|
|
141
|
+
namespace closure_impl {
|
142
|
+
|
143
|
+
typedef struct {
|
144
|
+
grpc_iomgr_cb_func cb;
|
145
|
+
void* cb_arg;
|
146
|
+
grpc_closure wrapper;
|
147
|
+
} wrapped_closure;
|
148
|
+
|
149
|
+
inline void closure_wrapper(grpc_exec_ctx* exec_ctx, void* arg,
|
150
|
+
grpc_error* error) {
|
151
|
+
wrapped_closure* wc = (wrapped_closure*)arg;
|
152
|
+
grpc_iomgr_cb_func cb = wc->cb;
|
153
|
+
void* cb_arg = wc->cb_arg;
|
154
|
+
gpr_free(wc);
|
155
|
+
cb(exec_ctx, cb_arg, error);
|
156
|
+
}
|
157
|
+
|
158
|
+
} // namespace closure_impl
|
159
|
+
|
160
|
+
#ifndef NDEBUG
|
161
|
+
inline grpc_closure* grpc_closure_create(const char* file, int line,
|
162
|
+
grpc_iomgr_cb_func cb, void* cb_arg,
|
163
|
+
grpc_closure_scheduler* scheduler) {
|
164
|
+
#else
|
165
|
+
inline grpc_closure* grpc_closure_create(grpc_iomgr_cb_func cb, void* cb_arg,
|
166
|
+
grpc_closure_scheduler* scheduler) {
|
167
|
+
#endif
|
168
|
+
closure_impl::wrapped_closure* wc =
|
169
|
+
(closure_impl::wrapped_closure*)gpr_malloc(sizeof(*wc));
|
170
|
+
wc->cb = cb;
|
171
|
+
wc->cb_arg = cb_arg;
|
172
|
+
#ifndef NDEBUG
|
173
|
+
grpc_closure_init(file, line, &wc->wrapper, closure_impl::closure_wrapper, wc,
|
174
|
+
scheduler);
|
175
|
+
#else
|
176
|
+
grpc_closure_init(&wc->wrapper, closure_impl::closure_wrapper, wc, scheduler);
|
177
|
+
#endif
|
178
|
+
return &wc->wrapper;
|
179
|
+
}
|
180
|
+
|
126
181
|
/* Create a heap allocated closure: try to avoid except for very rare events */
|
127
182
|
#ifndef NDEBUG
|
128
|
-
grpc_closure *grpc_closure_create(const char *file, int line,
|
129
|
-
grpc_iomgr_cb_func cb, void *cb_arg,
|
130
|
-
grpc_closure_scheduler *scheduler);
|
131
183
|
#define GRPC_CLOSURE_CREATE(cb, cb_arg, scheduler) \
|
132
184
|
grpc_closure_create(__FILE__, __LINE__, cb, cb_arg, scheduler)
|
133
185
|
#else
|
134
|
-
grpc_closure *grpc_closure_create(grpc_iomgr_cb_func cb, void *cb_arg,
|
135
|
-
grpc_closure_scheduler *scheduler);
|
136
186
|
#define GRPC_CLOSURE_CREATE(cb, cb_arg, scheduler) \
|
137
187
|
grpc_closure_create(cb, cb_arg, scheduler)
|
138
188
|
#endif
|
139
189
|
|
140
190
|
#define GRPC_CLOSURE_LIST_INIT \
|
141
|
-
{
|
191
|
+
{ nullptr, nullptr }
|
142
192
|
|
143
|
-
void grpc_closure_list_init(grpc_closure_list
|
193
|
+
inline void grpc_closure_list_init(grpc_closure_list* closure_list) {
|
194
|
+
closure_list->head = closure_list->tail = nullptr;
|
195
|
+
}
|
144
196
|
|
145
197
|
/** add \a closure to the end of \a list
|
146
198
|
and set \a closure's result to \a error
|
147
199
|
Returns true if \a list becomes non-empty */
|
148
|
-
bool grpc_closure_list_append(grpc_closure_list
|
149
|
-
|
200
|
+
inline bool grpc_closure_list_append(grpc_closure_list* closure_list,
|
201
|
+
grpc_closure* closure, grpc_error* error) {
|
202
|
+
if (closure == nullptr) {
|
203
|
+
GRPC_ERROR_UNREF(error);
|
204
|
+
return false;
|
205
|
+
}
|
206
|
+
closure->error_data.error = error;
|
207
|
+
closure->next_data.next = nullptr;
|
208
|
+
bool was_empty = (closure_list->head == nullptr);
|
209
|
+
if (was_empty) {
|
210
|
+
closure_list->head = closure;
|
211
|
+
} else {
|
212
|
+
closure_list->tail->next_data.next = closure;
|
213
|
+
}
|
214
|
+
closure_list->tail = closure;
|
215
|
+
return was_empty;
|
216
|
+
}
|
150
217
|
|
151
218
|
/** force all success bits in \a list to false */
|
152
|
-
void grpc_closure_list_fail_all(grpc_closure_list
|
153
|
-
|
219
|
+
inline void grpc_closure_list_fail_all(grpc_closure_list* list,
|
220
|
+
grpc_error* forced_failure) {
|
221
|
+
for (grpc_closure* c = list->head; c != nullptr; c = c->next_data.next) {
|
222
|
+
if (c->error_data.error == GRPC_ERROR_NONE) {
|
223
|
+
c->error_data.error = GRPC_ERROR_REF(forced_failure);
|
224
|
+
}
|
225
|
+
}
|
226
|
+
GRPC_ERROR_UNREF(forced_failure);
|
227
|
+
}
|
154
228
|
|
155
229
|
/** append all closures from \a src to \a dst and empty \a src. */
|
156
|
-
void grpc_closure_list_move(grpc_closure_list
|
230
|
+
inline void grpc_closure_list_move(grpc_closure_list* src,
|
231
|
+
grpc_closure_list* dst) {
|
232
|
+
if (src->head == nullptr) {
|
233
|
+
return;
|
234
|
+
}
|
235
|
+
if (dst->head == nullptr) {
|
236
|
+
*dst = *src;
|
237
|
+
} else {
|
238
|
+
dst->tail->next_data.next = src->head;
|
239
|
+
dst->tail = src->tail;
|
240
|
+
}
|
241
|
+
src->head = src->tail = nullptr;
|
242
|
+
}
|
157
243
|
|
158
244
|
/** return whether \a list is empty. */
|
159
|
-
bool grpc_closure_list_empty(grpc_closure_list
|
245
|
+
inline bool grpc_closure_list_empty(grpc_closure_list closure_list) {
|
246
|
+
return closure_list.head == nullptr;
|
247
|
+
}
|
248
|
+
|
249
|
+
#ifndef NDEBUG
|
250
|
+
inline void grpc_closure_run(const char* file, int line,
|
251
|
+
grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
252
|
+
grpc_error* error) {
|
253
|
+
#else
|
254
|
+
inline void grpc_closure_run(grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
255
|
+
grpc_error* error) {
|
256
|
+
#endif
|
257
|
+
GPR_TIMER_BEGIN("grpc_closure_run", 0);
|
258
|
+
if (c != nullptr) {
|
259
|
+
#ifndef NDEBUG
|
260
|
+
c->file_initiated = file;
|
261
|
+
c->line_initiated = line;
|
262
|
+
c->run = true;
|
263
|
+
#endif
|
264
|
+
assert(c->cb);
|
265
|
+
c->scheduler->vtable->run(exec_ctx, c, error);
|
266
|
+
} else {
|
267
|
+
GRPC_ERROR_UNREF(error);
|
268
|
+
}
|
269
|
+
GPR_TIMER_END("grpc_closure_run", 0);
|
270
|
+
}
|
160
271
|
|
161
272
|
/** Run a closure directly. Caller ensures that no locks are being held above.
|
162
273
|
* Note that calling this at the end of a closure callback function itself is
|
163
274
|
* by definition safe. */
|
164
275
|
#ifndef NDEBUG
|
165
|
-
void grpc_closure_run(const char *file, int line, grpc_exec_ctx *exec_ctx,
|
166
|
-
grpc_closure *closure, grpc_error *error);
|
167
276
|
#define GRPC_CLOSURE_RUN(exec_ctx, closure, error) \
|
168
277
|
grpc_closure_run(__FILE__, __LINE__, exec_ctx, closure, error)
|
169
278
|
#else
|
170
|
-
void grpc_closure_run(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
171
|
-
grpc_error *error);
|
172
279
|
#define GRPC_CLOSURE_RUN(exec_ctx, closure, error) \
|
173
280
|
grpc_closure_run(exec_ctx, closure, error)
|
174
281
|
#endif
|
175
282
|
|
283
|
+
#ifndef NDEBUG
|
284
|
+
inline void grpc_closure_sched(const char* file, int line,
|
285
|
+
grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
286
|
+
grpc_error* error) {
|
287
|
+
#else
|
288
|
+
inline void grpc_closure_sched(grpc_exec_ctx* exec_ctx, grpc_closure* c,
|
289
|
+
grpc_error* error) {
|
290
|
+
#endif
|
291
|
+
GPR_TIMER_BEGIN("grpc_closure_sched", 0);
|
292
|
+
if (c != nullptr) {
|
293
|
+
#ifndef NDEBUG
|
294
|
+
if (c->scheduled) {
|
295
|
+
gpr_log(GPR_ERROR,
|
296
|
+
"Closure already scheduled. (closure: %p, created: [%s:%d], "
|
297
|
+
"previously scheduled at: [%s: %d] run?: %s",
|
298
|
+
c, c->file_created, c->line_created, c->file_initiated,
|
299
|
+
c->line_initiated, c->run ? "true" : "false");
|
300
|
+
abort();
|
301
|
+
}
|
302
|
+
c->scheduled = true;
|
303
|
+
c->file_initiated = file;
|
304
|
+
c->line_initiated = line;
|
305
|
+
c->run = false;
|
306
|
+
#endif
|
307
|
+
assert(c->cb);
|
308
|
+
c->scheduler->vtable->sched(exec_ctx, c, error);
|
309
|
+
} else {
|
310
|
+
GRPC_ERROR_UNREF(error);
|
311
|
+
}
|
312
|
+
GPR_TIMER_END("grpc_closure_sched", 0);
|
313
|
+
}
|
314
|
+
|
176
315
|
/** Schedule a closure to be run. Does not need to be run from a safe point. */
|
177
316
|
#ifndef NDEBUG
|
178
|
-
void grpc_closure_sched(const char *file, int line, grpc_exec_ctx *exec_ctx,
|
179
|
-
grpc_closure *closure, grpc_error *error);
|
180
317
|
#define GRPC_CLOSURE_SCHED(exec_ctx, closure, error) \
|
181
318
|
grpc_closure_sched(__FILE__, __LINE__, exec_ctx, closure, error)
|
182
319
|
#else
|
183
|
-
void grpc_closure_sched(grpc_exec_ctx *exec_ctx, grpc_closure *closure,
|
184
|
-
grpc_error *error);
|
185
320
|
#define GRPC_CLOSURE_SCHED(exec_ctx, closure, error) \
|
186
321
|
grpc_closure_sched(exec_ctx, closure, error)
|
187
322
|
#endif
|
188
323
|
|
324
|
+
#ifndef NDEBUG
|
325
|
+
inline void grpc_closure_list_sched(const char* file, int line,
|
326
|
+
grpc_exec_ctx* exec_ctx,
|
327
|
+
grpc_closure_list* list) {
|
328
|
+
#else
|
329
|
+
inline void grpc_closure_list_sched(grpc_exec_ctx* exec_ctx,
|
330
|
+
grpc_closure_list* list) {
|
331
|
+
#endif
|
332
|
+
grpc_closure* c = list->head;
|
333
|
+
while (c != nullptr) {
|
334
|
+
grpc_closure* next = c->next_data.next;
|
335
|
+
#ifndef NDEBUG
|
336
|
+
if (c->scheduled) {
|
337
|
+
gpr_log(GPR_ERROR,
|
338
|
+
"Closure already scheduled. (closure: %p, created: [%s:%d], "
|
339
|
+
"previously scheduled at: [%s: %d] run?: %s",
|
340
|
+
c, c->file_created, c->line_created, c->file_initiated,
|
341
|
+
c->line_initiated, c->run ? "true" : "false");
|
342
|
+
abort();
|
343
|
+
}
|
344
|
+
c->scheduled = true;
|
345
|
+
c->file_initiated = file;
|
346
|
+
c->line_initiated = line;
|
347
|
+
c->run = false;
|
348
|
+
#endif
|
349
|
+
assert(c->cb);
|
350
|
+
c->scheduler->vtable->sched(exec_ctx, c, c->error_data.error);
|
351
|
+
c = next;
|
352
|
+
}
|
353
|
+
list->head = list->tail = nullptr;
|
354
|
+
}
|
355
|
+
|
189
356
|
/** Schedule all closures in a list to be run. Does not need to be run from a
|
190
357
|
* safe point. */
|
191
358
|
#ifndef NDEBUG
|
192
|
-
void grpc_closure_list_sched(const char *file, int line,
|
193
|
-
grpc_exec_ctx *exec_ctx,
|
194
|
-
grpc_closure_list *closure_list);
|
195
359
|
#define GRPC_CLOSURE_LIST_SCHED(exec_ctx, closure_list) \
|
196
360
|
grpc_closure_list_sched(__FILE__, __LINE__, exec_ctx, closure_list)
|
197
361
|
#else
|
198
|
-
void grpc_closure_list_sched(grpc_exec_ctx *exec_ctx,
|
199
|
-
grpc_closure_list *closure_list);
|
200
362
|
#define GRPC_CLOSURE_LIST_SCHED(exec_ctx, closure_list) \
|
201
363
|
grpc_closure_list_sched(exec_ctx, closure_list)
|
202
364
|
#endif
|
203
365
|
|
204
|
-
#ifdef __cplusplus
|
205
|
-
}
|
206
|
-
#endif
|
207
|
-
|
208
366
|
#endif /* GRPC_CORE_LIB_IOMGR_CLOSURE_H */
|