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
@@ -22,6 +22,7 @@
|
|
22
22
|
|
23
23
|
#include "src/core/lib/iomgr/sockaddr.h"
|
24
24
|
|
25
|
+
#include <inttypes.h>
|
25
26
|
#include <io.h>
|
26
27
|
|
27
28
|
#include <grpc/support/alloc.h>
|
@@ -51,11 +52,11 @@ struct grpc_tcp_listener {
|
|
51
52
|
/* This will hold the socket for the next accept. */
|
52
53
|
SOCKET new_socket;
|
53
54
|
/* The listener winsocket. */
|
54
|
-
grpc_winsocket
|
55
|
+
grpc_winsocket* socket;
|
55
56
|
/* The actual TCP port number. */
|
56
57
|
int port;
|
57
58
|
unsigned port_index;
|
58
|
-
grpc_tcp_server
|
59
|
+
grpc_tcp_server* server;
|
59
60
|
/* The cached AcceptEx for that port. */
|
60
61
|
LPFN_ACCEPTEX AcceptEx;
|
61
62
|
int shutting_down;
|
@@ -63,7 +64,7 @@ struct grpc_tcp_listener {
|
|
63
64
|
/* closure for socket notification of accept being ready */
|
64
65
|
grpc_closure on_accept;
|
65
66
|
/* linked list */
|
66
|
-
struct grpc_tcp_listener
|
67
|
+
struct grpc_tcp_listener* next;
|
67
68
|
};
|
68
69
|
|
69
70
|
/* the overall server */
|
@@ -71,7 +72,7 @@ struct grpc_tcp_server {
|
|
71
72
|
gpr_refcount refs;
|
72
73
|
/* Called whenever accept() succeeds on a server port. */
|
73
74
|
grpc_tcp_server_cb on_accept_cb;
|
74
|
-
void
|
75
|
+
void* on_accept_cb_arg;
|
75
76
|
|
76
77
|
gpr_mu mu;
|
77
78
|
|
@@ -79,25 +80,25 @@ struct grpc_tcp_server {
|
|
79
80
|
int active_ports;
|
80
81
|
|
81
82
|
/* linked list of server ports */
|
82
|
-
grpc_tcp_listener
|
83
|
-
grpc_tcp_listener
|
83
|
+
grpc_tcp_listener* head;
|
84
|
+
grpc_tcp_listener* tail;
|
84
85
|
|
85
86
|
/* List of closures passed to shutdown_starting_add(). */
|
86
87
|
grpc_closure_list shutdown_starting;
|
87
88
|
|
88
89
|
/* shutdown callback */
|
89
|
-
grpc_closure
|
90
|
+
grpc_closure* shutdown_complete;
|
90
91
|
|
91
|
-
grpc_channel_args
|
92
|
+
grpc_channel_args* channel_args;
|
92
93
|
};
|
93
94
|
|
94
95
|
/* Public function. Allocates the proper data structures to hold a
|
95
96
|
grpc_tcp_server. */
|
96
|
-
grpc_error
|
97
|
-
grpc_closure
|
98
|
-
const grpc_channel_args
|
99
|
-
grpc_tcp_server
|
100
|
-
grpc_tcp_server
|
97
|
+
grpc_error* grpc_tcp_server_create(grpc_exec_ctx* exec_ctx,
|
98
|
+
grpc_closure* shutdown_complete,
|
99
|
+
const grpc_channel_args* args,
|
100
|
+
grpc_tcp_server** server) {
|
101
|
+
grpc_tcp_server* s = (grpc_tcp_server*)gpr_malloc(sizeof(grpc_tcp_server));
|
101
102
|
s->channel_args = grpc_channel_args_copy(args);
|
102
103
|
gpr_ref_init(&s->refs, 1);
|
103
104
|
gpr_mu_init(&s->mu);
|
@@ -113,15 +114,15 @@ grpc_error *grpc_tcp_server_create(grpc_exec_ctx *exec_ctx,
|
|
113
114
|
return GRPC_ERROR_NONE;
|
114
115
|
}
|
115
116
|
|
116
|
-
static void destroy_server(grpc_exec_ctx
|
117
|
-
grpc_error
|
118
|
-
grpc_tcp_server
|
117
|
+
static void destroy_server(grpc_exec_ctx* exec_ctx, void* arg,
|
118
|
+
grpc_error* error) {
|
119
|
+
grpc_tcp_server* s = (grpc_tcp_server*)arg;
|
119
120
|
|
120
121
|
/* Now that the accepts have been aborted, we can destroy the sockets.
|
121
122
|
The IOCP won't get notified on these, so we can flag them as already
|
122
123
|
closed by the system. */
|
123
124
|
while (s->head) {
|
124
|
-
grpc_tcp_listener
|
125
|
+
grpc_tcp_listener* sp = s->head;
|
125
126
|
s->head = sp->next;
|
126
127
|
sp->next = NULL;
|
127
128
|
grpc_winsocket_destroy(sp->socket);
|
@@ -131,32 +132,33 @@ static void destroy_server(grpc_exec_ctx *exec_ctx, void *arg,
|
|
131
132
|
gpr_free(s);
|
132
133
|
}
|
133
134
|
|
134
|
-
static void finish_shutdown_locked(grpc_exec_ctx
|
135
|
-
grpc_tcp_server
|
135
|
+
static void finish_shutdown_locked(grpc_exec_ctx* exec_ctx,
|
136
|
+
grpc_tcp_server* s) {
|
136
137
|
if (s->shutdown_complete != NULL) {
|
137
138
|
GRPC_CLOSURE_SCHED(exec_ctx, s->shutdown_complete, GRPC_ERROR_NONE);
|
138
139
|
}
|
139
140
|
|
140
|
-
GRPC_CLOSURE_SCHED(
|
141
|
-
|
142
|
-
|
141
|
+
GRPC_CLOSURE_SCHED(
|
142
|
+
exec_ctx,
|
143
|
+
GRPC_CLOSURE_CREATE(destroy_server, s, grpc_schedule_on_exec_ctx),
|
144
|
+
GRPC_ERROR_NONE);
|
143
145
|
}
|
144
146
|
|
145
|
-
grpc_tcp_server
|
147
|
+
grpc_tcp_server* grpc_tcp_server_ref(grpc_tcp_server* s) {
|
146
148
|
gpr_ref_non_zero(&s->refs);
|
147
149
|
return s;
|
148
150
|
}
|
149
151
|
|
150
|
-
void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server
|
151
|
-
grpc_closure
|
152
|
+
void grpc_tcp_server_shutdown_starting_add(grpc_tcp_server* s,
|
153
|
+
grpc_closure* shutdown_starting) {
|
152
154
|
gpr_mu_lock(&s->mu);
|
153
155
|
grpc_closure_list_append(&s->shutdown_starting, shutdown_starting,
|
154
156
|
GRPC_ERROR_NONE);
|
155
157
|
gpr_mu_unlock(&s->mu);
|
156
158
|
}
|
157
159
|
|
158
|
-
static void tcp_server_destroy(grpc_exec_ctx
|
159
|
-
grpc_tcp_listener
|
160
|
+
static void tcp_server_destroy(grpc_exec_ctx* exec_ctx, grpc_tcp_server* s) {
|
161
|
+
grpc_tcp_listener* sp;
|
160
162
|
gpr_mu_lock(&s->mu);
|
161
163
|
|
162
164
|
/* First, shutdown all fd's. This will queue abortion calls for all
|
@@ -172,7 +174,7 @@ static void tcp_server_destroy(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
|
|
172
174
|
gpr_mu_unlock(&s->mu);
|
173
175
|
}
|
174
176
|
|
175
|
-
void grpc_tcp_server_unref(grpc_exec_ctx
|
177
|
+
void grpc_tcp_server_unref(grpc_exec_ctx* exec_ctx, grpc_tcp_server* s) {
|
176
178
|
if (gpr_unref(&s->refs)) {
|
177
179
|
grpc_tcp_server_shutdown_listeners(exec_ctx, s);
|
178
180
|
gpr_mu_lock(&s->mu);
|
@@ -183,18 +185,19 @@ void grpc_tcp_server_unref(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s) {
|
|
183
185
|
}
|
184
186
|
|
185
187
|
/* Prepare (bind) a recently-created socket for listening. */
|
186
|
-
static grpc_error
|
187
|
-
const grpc_resolved_address
|
188
|
-
int
|
188
|
+
static grpc_error* prepare_socket(SOCKET sock,
|
189
|
+
const grpc_resolved_address* addr,
|
190
|
+
int* port) {
|
189
191
|
grpc_resolved_address sockname_temp;
|
190
|
-
grpc_error
|
192
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
193
|
+
int sockname_temp_len;
|
191
194
|
|
192
195
|
error = grpc_tcp_prepare_socket(sock);
|
193
196
|
if (error != GRPC_ERROR_NONE) {
|
194
197
|
goto failure;
|
195
198
|
}
|
196
199
|
|
197
|
-
if (bind(sock, (const struct sockaddr
|
200
|
+
if (bind(sock, (const struct sockaddr*)addr->addr, (int)addr->len) ==
|
198
201
|
SOCKET_ERROR) {
|
199
202
|
error = GRPC_WSA_ERROR(WSAGetLastError(), "bind");
|
200
203
|
goto failure;
|
@@ -205,8 +208,8 @@ static grpc_error *prepare_socket(SOCKET sock,
|
|
205
208
|
goto failure;
|
206
209
|
}
|
207
210
|
|
208
|
-
|
209
|
-
if (getsockname(sock, (struct sockaddr
|
211
|
+
sockname_temp_len = sizeof(struct sockaddr_storage);
|
212
|
+
if (getsockname(sock, (struct sockaddr*)sockname_temp.addr,
|
210
213
|
&sockname_temp_len) == SOCKET_ERROR) {
|
211
214
|
error = GRPC_WSA_ERROR(WSAGetLastError(), "getsockname");
|
212
215
|
goto failure;
|
@@ -218,7 +221,7 @@ static grpc_error *prepare_socket(SOCKET sock,
|
|
218
221
|
|
219
222
|
failure:
|
220
223
|
GPR_ASSERT(error != GRPC_ERROR_NONE);
|
221
|
-
char
|
224
|
+
char* tgtaddr = grpc_sockaddr_to_uri(addr);
|
222
225
|
grpc_error_set_int(
|
223
226
|
grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
224
227
|
"Failed to prepare server socket", &error, 1),
|
@@ -231,8 +234,8 @@ failure:
|
|
231
234
|
return error;
|
232
235
|
}
|
233
236
|
|
234
|
-
static void decrement_active_ports_and_notify_locked(grpc_exec_ctx
|
235
|
-
grpc_tcp_listener
|
237
|
+
static void decrement_active_ports_and_notify_locked(grpc_exec_ctx* exec_ctx,
|
238
|
+
grpc_tcp_listener* sp) {
|
236
239
|
sp->shutting_down = 0;
|
237
240
|
GPR_ASSERT(sp->server->active_ports > 0);
|
238
241
|
if (0 == --sp->server->active_ports) {
|
@@ -242,13 +245,13 @@ static void decrement_active_ports_and_notify_locked(grpc_exec_ctx *exec_ctx,
|
|
242
245
|
|
243
246
|
/* In order to do an async accept, we need to create a socket first which
|
244
247
|
will be the one assigned to the new incoming connection. */
|
245
|
-
static grpc_error
|
246
|
-
grpc_tcp_listener
|
248
|
+
static grpc_error* start_accept_locked(grpc_exec_ctx* exec_ctx,
|
249
|
+
grpc_tcp_listener* port) {
|
247
250
|
SOCKET sock = INVALID_SOCKET;
|
248
251
|
BOOL success;
|
249
252
|
DWORD addrlen = sizeof(struct sockaddr_in6) + 16;
|
250
253
|
DWORD bytes_received = 0;
|
251
|
-
grpc_error
|
254
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
252
255
|
|
253
256
|
if (port->shutting_down) {
|
254
257
|
return GRPC_ERROR_NONE;
|
@@ -293,14 +296,14 @@ failure:
|
|
293
296
|
}
|
294
297
|
|
295
298
|
/* Event manager callback when reads are ready. */
|
296
|
-
static void on_accept(grpc_exec_ctx
|
297
|
-
grpc_tcp_listener
|
299
|
+
static void on_accept(grpc_exec_ctx* exec_ctx, void* arg, grpc_error* error) {
|
300
|
+
grpc_tcp_listener* sp = (grpc_tcp_listener*)arg;
|
298
301
|
SOCKET sock = sp->new_socket;
|
299
|
-
grpc_winsocket_callback_info
|
300
|
-
grpc_endpoint
|
302
|
+
grpc_winsocket_callback_info* info = &sp->socket->read_info;
|
303
|
+
grpc_endpoint* ep = NULL;
|
301
304
|
grpc_resolved_address peer_name;
|
302
|
-
char
|
303
|
-
char
|
305
|
+
char* peer_name_string;
|
306
|
+
char* fd_name;
|
304
307
|
DWORD transfered_bytes;
|
305
308
|
DWORD flags;
|
306
309
|
BOOL wsa_success;
|
@@ -314,7 +317,7 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|
314
317
|
this is necessary in the read/write case, it's useless for the accept
|
315
318
|
case. We only need to adjust the pending callback count */
|
316
319
|
if (error != GRPC_ERROR_NONE) {
|
317
|
-
const char
|
320
|
+
const char* msg = grpc_error_string(error);
|
318
321
|
gpr_log(GPR_INFO, "Skipping on_accept due to error: %s", msg);
|
319
322
|
|
320
323
|
gpr_mu_unlock(&sp->server->mu);
|
@@ -328,7 +331,7 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|
328
331
|
&transfered_bytes, FALSE, &flags);
|
329
332
|
if (!wsa_success) {
|
330
333
|
if (!sp->shutting_down) {
|
331
|
-
char
|
334
|
+
char* utf8_message = gpr_format_message(WSAGetLastError());
|
332
335
|
gpr_log(GPR_ERROR, "on_accept error: %s", utf8_message);
|
333
336
|
gpr_free(utf8_message);
|
334
337
|
}
|
@@ -337,20 +340,19 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|
337
340
|
if (!sp->shutting_down) {
|
338
341
|
peer_name_string = NULL;
|
339
342
|
err = setsockopt(sock, SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
|
340
|
-
(char
|
343
|
+
(char*)&sp->socket->socket, sizeof(sp->socket->socket));
|
341
344
|
if (err) {
|
342
|
-
char
|
345
|
+
char* utf8_message = gpr_format_message(WSAGetLastError());
|
343
346
|
gpr_log(GPR_ERROR, "setsockopt error: %s", utf8_message);
|
344
347
|
gpr_free(utf8_message);
|
345
348
|
}
|
346
349
|
int peer_name_len = (int)peer_name.len;
|
347
|
-
err =
|
348
|
-
getpeername(sock, (struct sockaddr *)peer_name.addr, &peer_name_len);
|
350
|
+
err = getpeername(sock, (struct sockaddr*)peer_name.addr, &peer_name_len);
|
349
351
|
peer_name.len = (size_t)peer_name_len;
|
350
352
|
if (!err) {
|
351
353
|
peer_name_string = grpc_sockaddr_to_uri(&peer_name);
|
352
354
|
} else {
|
353
|
-
char
|
355
|
+
char* utf8_message = gpr_format_message(WSAGetLastError());
|
354
356
|
gpr_log(GPR_ERROR, "getpeername error: %s", utf8_message);
|
355
357
|
gpr_free(utf8_message);
|
356
358
|
}
|
@@ -368,7 +370,8 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|
368
370
|
managed to accept a connection, and created an endpoint. */
|
369
371
|
if (ep) {
|
370
372
|
// Create acceptor.
|
371
|
-
grpc_tcp_server_acceptor
|
373
|
+
grpc_tcp_server_acceptor* acceptor =
|
374
|
+
(grpc_tcp_server_acceptor*)gpr_malloc(sizeof(*acceptor));
|
372
375
|
acceptor->from_server = sp->server;
|
373
376
|
acceptor->port_index = sp->port_index;
|
374
377
|
acceptor->fd_index = 0;
|
@@ -387,17 +390,17 @@ static void on_accept(grpc_exec_ctx *exec_ctx, void *arg, grpc_error *error) {
|
|
387
390
|
gpr_mu_unlock(&sp->server->mu);
|
388
391
|
}
|
389
392
|
|
390
|
-
static grpc_error
|
391
|
-
const grpc_resolved_address
|
393
|
+
static grpc_error* add_socket_to_server(grpc_tcp_server* s, SOCKET sock,
|
394
|
+
const grpc_resolved_address* addr,
|
392
395
|
unsigned port_index,
|
393
|
-
grpc_tcp_listener
|
394
|
-
grpc_tcp_listener
|
396
|
+
grpc_tcp_listener** listener) {
|
397
|
+
grpc_tcp_listener* sp = NULL;
|
395
398
|
int port = -1;
|
396
399
|
int status;
|
397
400
|
GUID guid = WSAID_ACCEPTEX;
|
398
401
|
DWORD ioctl_num_bytes;
|
399
402
|
LPFN_ACCEPTEX AcceptEx;
|
400
|
-
grpc_error
|
403
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
401
404
|
|
402
405
|
/* We need to grab the AcceptEx pointer for that port, as it may be
|
403
406
|
interface-dependent. We'll cache it to avoid doing that again. */
|
@@ -406,7 +409,7 @@ static grpc_error *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
|
|
406
409
|
&AcceptEx, sizeof(AcceptEx), &ioctl_num_bytes, NULL, NULL);
|
407
410
|
|
408
411
|
if (status != 0) {
|
409
|
-
char
|
412
|
+
char* utf8_message = gpr_format_message(WSAGetLastError());
|
410
413
|
gpr_log(GPR_ERROR, "on_connect error: %s", utf8_message);
|
411
414
|
gpr_free(utf8_message);
|
412
415
|
closesocket(sock);
|
@@ -421,7 +424,7 @@ static grpc_error *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
|
|
421
424
|
GPR_ASSERT(port >= 0);
|
422
425
|
gpr_mu_lock(&s->mu);
|
423
426
|
GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
|
424
|
-
sp = gpr_malloc(sizeof(grpc_tcp_listener));
|
427
|
+
sp = (grpc_tcp_listener*)gpr_malloc(sizeof(grpc_tcp_listener));
|
425
428
|
sp->next = NULL;
|
426
429
|
if (s->head == NULL) {
|
427
430
|
s->head = sp;
|
@@ -445,17 +448,17 @@ static grpc_error *add_socket_to_server(grpc_tcp_server *s, SOCKET sock,
|
|
445
448
|
return GRPC_ERROR_NONE;
|
446
449
|
}
|
447
450
|
|
448
|
-
grpc_error
|
449
|
-
const grpc_resolved_address
|
450
|
-
int
|
451
|
-
grpc_tcp_listener
|
451
|
+
grpc_error* grpc_tcp_server_add_port(grpc_tcp_server* s,
|
452
|
+
const grpc_resolved_address* addr,
|
453
|
+
int* port) {
|
454
|
+
grpc_tcp_listener* sp = NULL;
|
452
455
|
SOCKET sock;
|
453
456
|
grpc_resolved_address addr6_v4mapped;
|
454
457
|
grpc_resolved_address wildcard;
|
455
|
-
grpc_resolved_address
|
458
|
+
grpc_resolved_address* allocated_addr = NULL;
|
456
459
|
grpc_resolved_address sockname_temp;
|
457
460
|
unsigned port_index = 0;
|
458
|
-
grpc_error
|
461
|
+
grpc_error* error = GRPC_ERROR_NONE;
|
459
462
|
|
460
463
|
if (s->tail != NULL) {
|
461
464
|
port_index = s->tail->port_index + 1;
|
@@ -467,12 +470,13 @@ grpc_error *grpc_tcp_server_add_port(grpc_tcp_server *s,
|
|
467
470
|
for (sp = s->head; sp; sp = sp->next) {
|
468
471
|
int sockname_temp_len = sizeof(struct sockaddr_storage);
|
469
472
|
if (0 == getsockname(sp->socket->socket,
|
470
|
-
(struct sockaddr
|
473
|
+
(struct sockaddr*)sockname_temp.addr,
|
471
474
|
&sockname_temp_len)) {
|
472
475
|
sockname_temp.len = (size_t)sockname_temp_len;
|
473
476
|
*port = grpc_sockaddr_get_port(&sockname_temp);
|
474
477
|
if (*port > 0) {
|
475
|
-
allocated_addr =
|
478
|
+
allocated_addr =
|
479
|
+
(grpc_resolved_address*)gpr_malloc(sizeof(grpc_resolved_address));
|
476
480
|
memcpy(allocated_addr, addr, sizeof(grpc_resolved_address));
|
477
481
|
grpc_sockaddr_set_port(allocated_addr, *port);
|
478
482
|
addr = allocated_addr;
|
@@ -506,7 +510,7 @@ done:
|
|
506
510
|
gpr_free(allocated_addr);
|
507
511
|
|
508
512
|
if (error != GRPC_ERROR_NONE) {
|
509
|
-
grpc_error
|
513
|
+
grpc_error* error_out = GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
|
510
514
|
"Failed to add port to server", &error, 1);
|
511
515
|
GRPC_ERROR_UNREF(error);
|
512
516
|
error = error_out;
|
@@ -518,11 +522,11 @@ done:
|
|
518
522
|
return error;
|
519
523
|
}
|
520
524
|
|
521
|
-
void grpc_tcp_server_start(grpc_exec_ctx
|
522
|
-
grpc_pollset
|
525
|
+
void grpc_tcp_server_start(grpc_exec_ctx* exec_ctx, grpc_tcp_server* s,
|
526
|
+
grpc_pollset** pollset, size_t pollset_count,
|
523
527
|
grpc_tcp_server_cb on_accept_cb,
|
524
|
-
void
|
525
|
-
grpc_tcp_listener
|
528
|
+
void* on_accept_cb_arg) {
|
529
|
+
grpc_tcp_listener* sp;
|
526
530
|
GPR_ASSERT(on_accept_cb);
|
527
531
|
gpr_mu_lock(&s->mu);
|
528
532
|
GPR_ASSERT(!s->on_accept_cb);
|
@@ -537,7 +541,7 @@ void grpc_tcp_server_start(grpc_exec_ctx *exec_ctx, grpc_tcp_server *s,
|
|
537
541
|
gpr_mu_unlock(&s->mu);
|
538
542
|
}
|
539
543
|
|
540
|
-
void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx
|
541
|
-
grpc_tcp_server
|
544
|
+
void grpc_tcp_server_shutdown_listeners(grpc_exec_ctx* exec_ctx,
|
545
|
+
grpc_tcp_server* s) {}
|
542
546
|
|
543
547
|
#endif /* GRPC_WINSOCK_SOCKET */
|
@@ -0,0 +1,420 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2016 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/lib/iomgr/port.h"
|
20
|
+
|
21
|
+
#ifdef GRPC_UV
|
22
|
+
|
23
|
+
#include <limits.h>
|
24
|
+
#include <string.h>
|
25
|
+
|
26
|
+
#include <grpc/slice_buffer.h>
|
27
|
+
|
28
|
+
#include <grpc/support/alloc.h>
|
29
|
+
#include <grpc/support/log.h>
|
30
|
+
#include <grpc/support/string_util.h>
|
31
|
+
|
32
|
+
#include "src/core/lib/iomgr/error.h"
|
33
|
+
#include "src/core/lib/iomgr/iomgr_uv.h"
|
34
|
+
#include "src/core/lib/iomgr/network_status_tracker.h"
|
35
|
+
#include "src/core/lib/iomgr/resource_quota.h"
|
36
|
+
#include "src/core/lib/iomgr/tcp_uv.h"
|
37
|
+
#include "src/core/lib/slice/slice_internal.h"
|
38
|
+
#include "src/core/lib/slice/slice_string_helpers.h"
|
39
|
+
#include "src/core/lib/support/string.h"
|
40
|
+
|
41
|
+
grpc_core::TraceFlag grpc_tcp_trace(false, "tcp");
|
42
|
+
|
43
|
+
typedef struct {
|
44
|
+
grpc_endpoint base;
|
45
|
+
gpr_refcount refcount;
|
46
|
+
|
47
|
+
uv_write_t write_req;
|
48
|
+
uv_shutdown_t shutdown_req;
|
49
|
+
|
50
|
+
uv_tcp_t* handle;
|
51
|
+
|
52
|
+
grpc_closure* read_cb;
|
53
|
+
grpc_closure* write_cb;
|
54
|
+
|
55
|
+
grpc_slice_buffer* read_slices;
|
56
|
+
grpc_slice_buffer* write_slices;
|
57
|
+
uv_buf_t* write_buffers;
|
58
|
+
|
59
|
+
grpc_resource_user* resource_user;
|
60
|
+
grpc_resource_user_slice_allocator slice_allocator;
|
61
|
+
|
62
|
+
bool shutting_down;
|
63
|
+
|
64
|
+
char* peer_string;
|
65
|
+
grpc_pollset* pollset;
|
66
|
+
} grpc_tcp;
|
67
|
+
|
68
|
+
static void tcp_free(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp) {
|
69
|
+
grpc_resource_user_unref(exec_ctx, tcp->resource_user);
|
70
|
+
gpr_free(tcp->handle);
|
71
|
+
gpr_free(tcp->peer_string);
|
72
|
+
gpr_free(tcp);
|
73
|
+
}
|
74
|
+
|
75
|
+
#ifndef NDEBUG
|
76
|
+
#define TCP_UNREF(exec_ctx, tcp, reason) \
|
77
|
+
tcp_unref((exec_ctx), (tcp), (reason), __FILE__, __LINE__)
|
78
|
+
#define TCP_REF(tcp, reason) tcp_ref((tcp), (reason), __FILE__, __LINE__)
|
79
|
+
static void tcp_unref(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp,
|
80
|
+
const char* reason, const char* file, int line) {
|
81
|
+
if (grpc_tcp_trace.enabled()) {
|
82
|
+
gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
|
83
|
+
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
84
|
+
"TCP unref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
|
85
|
+
val - 1);
|
86
|
+
}
|
87
|
+
if (gpr_unref(&tcp->refcount)) {
|
88
|
+
tcp_free(exec_ctx, tcp);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
static void tcp_ref(grpc_tcp* tcp, const char* reason, const char* file,
|
93
|
+
int line) {
|
94
|
+
if (grpc_tcp_trace.enabled()) {
|
95
|
+
gpr_atm val = gpr_atm_no_barrier_load(&tcp->refcount.count);
|
96
|
+
gpr_log(file, line, GPR_LOG_SEVERITY_DEBUG,
|
97
|
+
"TCP ref %p : %s %" PRIdPTR " -> %" PRIdPTR, tcp, reason, val,
|
98
|
+
val + 1);
|
99
|
+
}
|
100
|
+
gpr_ref(&tcp->refcount);
|
101
|
+
}
|
102
|
+
#else
|
103
|
+
#define TCP_UNREF(exec_ctx, tcp, reason) tcp_unref((exec_ctx), (tcp))
|
104
|
+
#define TCP_REF(tcp, reason) tcp_ref((tcp))
|
105
|
+
static void tcp_unref(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp) {
|
106
|
+
if (gpr_unref(&tcp->refcount)) {
|
107
|
+
tcp_free(exec_ctx, tcp);
|
108
|
+
}
|
109
|
+
}
|
110
|
+
|
111
|
+
static void tcp_ref(grpc_tcp* tcp) { gpr_ref(&tcp->refcount); }
|
112
|
+
#endif
|
113
|
+
|
114
|
+
static void uv_close_callback(uv_handle_t* handle) {
|
115
|
+
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
116
|
+
grpc_tcp* tcp = (grpc_tcp*)handle->data;
|
117
|
+
TCP_UNREF(&exec_ctx, tcp, "destroy");
|
118
|
+
grpc_exec_ctx_finish(&exec_ctx);
|
119
|
+
}
|
120
|
+
|
121
|
+
static void alloc_uv_buf(uv_handle_t* handle, size_t suggested_size,
|
122
|
+
uv_buf_t* buf) {
|
123
|
+
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
124
|
+
grpc_tcp* tcp = (grpc_tcp*)handle->data;
|
125
|
+
(void)suggested_size;
|
126
|
+
/* Before calling uv_read_start, we allocate a buffer with exactly one slice
|
127
|
+
* to tcp->read_slices and wait for the callback indicating that the
|
128
|
+
* allocation was successful. So slices[0] should always exist here */
|
129
|
+
buf->base = (char*)GRPC_SLICE_START_PTR(tcp->read_slices->slices[0]);
|
130
|
+
buf->len = GRPC_SLICE_LENGTH(tcp->read_slices->slices[0]);
|
131
|
+
grpc_exec_ctx_finish(&exec_ctx);
|
132
|
+
}
|
133
|
+
|
134
|
+
static void call_read_cb(grpc_exec_ctx* exec_ctx, grpc_tcp* tcp,
|
135
|
+
grpc_error* error) {
|
136
|
+
grpc_closure* cb = tcp->read_cb;
|
137
|
+
if (grpc_tcp_trace.enabled()) {
|
138
|
+
gpr_log(GPR_DEBUG, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
|
139
|
+
size_t i;
|
140
|
+
const char* str = grpc_error_string(error);
|
141
|
+
gpr_log(GPR_DEBUG, "read: error=%s", str);
|
142
|
+
|
143
|
+
for (i = 0; i < tcp->read_slices->count; i++) {
|
144
|
+
char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
|
145
|
+
GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
146
|
+
gpr_log(GPR_DEBUG, "READ %p (peer=%s): %s", tcp, tcp->peer_string, dump);
|
147
|
+
gpr_free(dump);
|
148
|
+
}
|
149
|
+
}
|
150
|
+
tcp->read_slices = NULL;
|
151
|
+
tcp->read_cb = NULL;
|
152
|
+
GRPC_CLOSURE_RUN(exec_ctx, cb, error);
|
153
|
+
}
|
154
|
+
|
155
|
+
static void read_callback(uv_stream_t* stream, ssize_t nread,
|
156
|
+
const uv_buf_t* buf) {
|
157
|
+
grpc_error* error;
|
158
|
+
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
159
|
+
grpc_tcp* tcp = (grpc_tcp*)stream->data;
|
160
|
+
grpc_slice_buffer garbage;
|
161
|
+
if (nread == 0) {
|
162
|
+
// Nothing happened. Wait for the next callback
|
163
|
+
return;
|
164
|
+
}
|
165
|
+
TCP_UNREF(&exec_ctx, tcp, "read");
|
166
|
+
// TODO(murgatroid99): figure out what the return value here means
|
167
|
+
uv_read_stop(stream);
|
168
|
+
if (nread == UV_EOF) {
|
169
|
+
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("EOF");
|
170
|
+
grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, tcp->read_slices);
|
171
|
+
} else if (nread > 0) {
|
172
|
+
// Successful read
|
173
|
+
error = GRPC_ERROR_NONE;
|
174
|
+
if ((size_t)nread < tcp->read_slices->length) {
|
175
|
+
/* TODO(murgatroid99): Instead of discarding the unused part of the read
|
176
|
+
* buffer, reuse it as the next read buffer. */
|
177
|
+
grpc_slice_buffer_init(&garbage);
|
178
|
+
grpc_slice_buffer_trim_end(
|
179
|
+
tcp->read_slices, tcp->read_slices->length - (size_t)nread, &garbage);
|
180
|
+
grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, &garbage);
|
181
|
+
}
|
182
|
+
} else {
|
183
|
+
// nread < 0: Error
|
184
|
+
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed");
|
185
|
+
grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, tcp->read_slices);
|
186
|
+
}
|
187
|
+
call_read_cb(&exec_ctx, tcp, error);
|
188
|
+
grpc_exec_ctx_finish(&exec_ctx);
|
189
|
+
}
|
190
|
+
|
191
|
+
static void tcp_read_allocation_done(grpc_exec_ctx* exec_ctx, void* tcpp,
|
192
|
+
grpc_error* error) {
|
193
|
+
int status;
|
194
|
+
grpc_tcp* tcp = (grpc_tcp*)tcpp;
|
195
|
+
if (grpc_tcp_trace.enabled()) {
|
196
|
+
gpr_log(GPR_DEBUG, "TCP:%p read_allocation_done: %s", tcp,
|
197
|
+
grpc_error_string(error));
|
198
|
+
}
|
199
|
+
if (error == GRPC_ERROR_NONE) {
|
200
|
+
status =
|
201
|
+
uv_read_start((uv_stream_t*)tcp->handle, alloc_uv_buf, read_callback);
|
202
|
+
if (status != 0) {
|
203
|
+
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Read failed at start");
|
204
|
+
error = grpc_error_set_str(
|
205
|
+
error, GRPC_ERROR_STR_OS_ERROR,
|
206
|
+
grpc_slice_from_static_string(uv_strerror(status)));
|
207
|
+
}
|
208
|
+
}
|
209
|
+
if (error != GRPC_ERROR_NONE) {
|
210
|
+
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, tcp->read_slices);
|
211
|
+
call_read_cb(exec_ctx, tcp, GRPC_ERROR_REF(error));
|
212
|
+
TCP_UNREF(exec_ctx, tcp, "read");
|
213
|
+
}
|
214
|
+
if (grpc_tcp_trace.enabled()) {
|
215
|
+
const char* str = grpc_error_string(error);
|
216
|
+
gpr_log(GPR_DEBUG, "Initiating read on %p: error=%s", tcp, str);
|
217
|
+
}
|
218
|
+
}
|
219
|
+
|
220
|
+
static void uv_endpoint_read(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
221
|
+
grpc_slice_buffer* read_slices, grpc_closure* cb) {
|
222
|
+
grpc_tcp* tcp = (grpc_tcp*)ep;
|
223
|
+
GRPC_UV_ASSERT_SAME_THREAD();
|
224
|
+
GPR_ASSERT(tcp->read_cb == NULL);
|
225
|
+
tcp->read_cb = cb;
|
226
|
+
tcp->read_slices = read_slices;
|
227
|
+
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, read_slices);
|
228
|
+
TCP_REF(tcp, "read");
|
229
|
+
grpc_resource_user_alloc_slices(exec_ctx, &tcp->slice_allocator,
|
230
|
+
GRPC_TCP_DEFAULT_READ_SLICE_SIZE, 1,
|
231
|
+
tcp->read_slices);
|
232
|
+
}
|
233
|
+
|
234
|
+
static void write_callback(uv_write_t* req, int status) {
|
235
|
+
grpc_tcp* tcp = (grpc_tcp*)req->data;
|
236
|
+
grpc_error* error;
|
237
|
+
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
238
|
+
grpc_closure* cb = tcp->write_cb;
|
239
|
+
tcp->write_cb = NULL;
|
240
|
+
TCP_UNREF(&exec_ctx, tcp, "write");
|
241
|
+
if (status == 0) {
|
242
|
+
error = GRPC_ERROR_NONE;
|
243
|
+
} else {
|
244
|
+
error = GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP Write failed");
|
245
|
+
}
|
246
|
+
if (grpc_tcp_trace.enabled()) {
|
247
|
+
const char* str = grpc_error_string(error);
|
248
|
+
gpr_log(GPR_DEBUG, "write complete on %p: error=%s", tcp, str);
|
249
|
+
}
|
250
|
+
gpr_free(tcp->write_buffers);
|
251
|
+
GRPC_CLOSURE_SCHED(&exec_ctx, cb, error);
|
252
|
+
grpc_exec_ctx_finish(&exec_ctx);
|
253
|
+
}
|
254
|
+
|
255
|
+
static void uv_endpoint_write(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
256
|
+
grpc_slice_buffer* write_slices,
|
257
|
+
grpc_closure* cb) {
|
258
|
+
grpc_tcp* tcp = (grpc_tcp*)ep;
|
259
|
+
uv_buf_t* buffers;
|
260
|
+
unsigned int buffer_count;
|
261
|
+
unsigned int i;
|
262
|
+
grpc_slice* slice;
|
263
|
+
uv_write_t* write_req;
|
264
|
+
GRPC_UV_ASSERT_SAME_THREAD();
|
265
|
+
|
266
|
+
if (grpc_tcp_trace.enabled()) {
|
267
|
+
size_t j;
|
268
|
+
|
269
|
+
for (j = 0; j < write_slices->count; j++) {
|
270
|
+
char* data = grpc_dump_slice(write_slices->slices[j],
|
271
|
+
GPR_DUMP_HEX | GPR_DUMP_ASCII);
|
272
|
+
gpr_log(GPR_DEBUG, "WRITE %p (peer=%s): %s", tcp, tcp->peer_string, data);
|
273
|
+
gpr_free(data);
|
274
|
+
}
|
275
|
+
}
|
276
|
+
|
277
|
+
if (tcp->shutting_down) {
|
278
|
+
GRPC_CLOSURE_SCHED(
|
279
|
+
exec_ctx, cb,
|
280
|
+
GRPC_ERROR_CREATE_FROM_STATIC_STRING("TCP socket is shutting down"));
|
281
|
+
return;
|
282
|
+
}
|
283
|
+
|
284
|
+
GPR_ASSERT(tcp->write_cb == NULL);
|
285
|
+
tcp->write_slices = write_slices;
|
286
|
+
GPR_ASSERT(tcp->write_slices->count <= UINT_MAX);
|
287
|
+
if (tcp->write_slices->count == 0) {
|
288
|
+
// No slices means we don't have to do anything,
|
289
|
+
// and libuv doesn't like empty writes
|
290
|
+
GRPC_CLOSURE_SCHED(exec_ctx, cb, GRPC_ERROR_NONE);
|
291
|
+
return;
|
292
|
+
}
|
293
|
+
|
294
|
+
tcp->write_cb = cb;
|
295
|
+
buffer_count = (unsigned int)tcp->write_slices->count;
|
296
|
+
buffers = (uv_buf_t*)gpr_malloc(sizeof(uv_buf_t) * buffer_count);
|
297
|
+
for (i = 0; i < buffer_count; i++) {
|
298
|
+
slice = &tcp->write_slices->slices[i];
|
299
|
+
buffers[i].base = (char*)GRPC_SLICE_START_PTR(*slice);
|
300
|
+
buffers[i].len = GRPC_SLICE_LENGTH(*slice);
|
301
|
+
}
|
302
|
+
tcp->write_buffers = buffers;
|
303
|
+
write_req = &tcp->write_req;
|
304
|
+
write_req->data = tcp;
|
305
|
+
TCP_REF(tcp, "write");
|
306
|
+
// TODO(murgatroid99): figure out what the return value here means
|
307
|
+
uv_write(write_req, (uv_stream_t*)tcp->handle, buffers, buffer_count,
|
308
|
+
write_callback);
|
309
|
+
}
|
310
|
+
|
311
|
+
static void uv_add_to_pollset(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
312
|
+
grpc_pollset* pollset) {
|
313
|
+
// No-op. We're ignoring pollsets currently
|
314
|
+
(void)exec_ctx;
|
315
|
+
(void)ep;
|
316
|
+
(void)pollset;
|
317
|
+
grpc_tcp* tcp = (grpc_tcp*)ep;
|
318
|
+
tcp->pollset = pollset;
|
319
|
+
}
|
320
|
+
|
321
|
+
static void uv_add_to_pollset_set(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
322
|
+
grpc_pollset_set* pollset) {
|
323
|
+
// No-op. We're ignoring pollsets currently
|
324
|
+
(void)exec_ctx;
|
325
|
+
(void)ep;
|
326
|
+
(void)pollset;
|
327
|
+
}
|
328
|
+
|
329
|
+
static void uv_delete_from_pollset_set(grpc_exec_ctx* exec_ctx,
|
330
|
+
grpc_endpoint* ep,
|
331
|
+
grpc_pollset_set* pollset) {
|
332
|
+
// No-op. We're ignoring pollsets currently
|
333
|
+
(void)exec_ctx;
|
334
|
+
(void)ep;
|
335
|
+
(void)pollset;
|
336
|
+
}
|
337
|
+
|
338
|
+
static void shutdown_callback(uv_shutdown_t* req, int status) {}
|
339
|
+
|
340
|
+
static void uv_endpoint_shutdown(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep,
|
341
|
+
grpc_error* why) {
|
342
|
+
grpc_tcp* tcp = (grpc_tcp*)ep;
|
343
|
+
if (!tcp->shutting_down) {
|
344
|
+
if (grpc_tcp_trace.enabled()) {
|
345
|
+
const char* str = grpc_error_string(why);
|
346
|
+
gpr_log(GPR_DEBUG, "TCP %p shutdown why=%s", tcp->handle, str);
|
347
|
+
}
|
348
|
+
tcp->shutting_down = true;
|
349
|
+
uv_shutdown_t* req = &tcp->shutdown_req;
|
350
|
+
uv_shutdown(req, (uv_stream_t*)tcp->handle, shutdown_callback);
|
351
|
+
grpc_resource_user_shutdown(exec_ctx, tcp->resource_user);
|
352
|
+
}
|
353
|
+
GRPC_ERROR_UNREF(why);
|
354
|
+
}
|
355
|
+
|
356
|
+
static void uv_destroy(grpc_exec_ctx* exec_ctx, grpc_endpoint* ep) {
|
357
|
+
grpc_network_status_unregister_endpoint(ep);
|
358
|
+
grpc_tcp* tcp = (grpc_tcp*)ep;
|
359
|
+
uv_close((uv_handle_t*)tcp->handle, uv_close_callback);
|
360
|
+
}
|
361
|
+
|
362
|
+
static char* uv_get_peer(grpc_endpoint* ep) {
|
363
|
+
grpc_tcp* tcp = (grpc_tcp*)ep;
|
364
|
+
return gpr_strdup(tcp->peer_string);
|
365
|
+
}
|
366
|
+
|
367
|
+
static grpc_resource_user* uv_get_resource_user(grpc_endpoint* ep) {
|
368
|
+
grpc_tcp* tcp = (grpc_tcp*)ep;
|
369
|
+
return tcp->resource_user;
|
370
|
+
}
|
371
|
+
|
372
|
+
static int uv_get_fd(grpc_endpoint* ep) { return -1; }
|
373
|
+
|
374
|
+
static grpc_endpoint_vtable vtable = {uv_endpoint_read,
|
375
|
+
uv_endpoint_write,
|
376
|
+
uv_add_to_pollset,
|
377
|
+
uv_add_to_pollset_set,
|
378
|
+
uv_delete_from_pollset_set,
|
379
|
+
uv_endpoint_shutdown,
|
380
|
+
uv_destroy,
|
381
|
+
uv_get_resource_user,
|
382
|
+
uv_get_peer,
|
383
|
+
uv_get_fd};
|
384
|
+
|
385
|
+
grpc_endpoint* grpc_tcp_create(uv_tcp_t* handle,
|
386
|
+
grpc_resource_quota* resource_quota,
|
387
|
+
char* peer_string) {
|
388
|
+
grpc_tcp* tcp = (grpc_tcp*)gpr_malloc(sizeof(grpc_tcp));
|
389
|
+
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
390
|
+
|
391
|
+
if (grpc_tcp_trace.enabled()) {
|
392
|
+
gpr_log(GPR_DEBUG, "Creating TCP endpoint %p", tcp);
|
393
|
+
}
|
394
|
+
|
395
|
+
/* Disable Nagle's Algorithm */
|
396
|
+
uv_tcp_nodelay(handle, 1);
|
397
|
+
|
398
|
+
memset(tcp, 0, sizeof(grpc_tcp));
|
399
|
+
tcp->base.vtable = &vtable;
|
400
|
+
tcp->handle = handle;
|
401
|
+
handle->data = tcp;
|
402
|
+
gpr_ref_init(&tcp->refcount, 1);
|
403
|
+
tcp->peer_string = gpr_strdup(peer_string);
|
404
|
+
tcp->shutting_down = false;
|
405
|
+
tcp->read_slices = NULL;
|
406
|
+
tcp->resource_user = grpc_resource_user_create(resource_quota, peer_string);
|
407
|
+
grpc_resource_user_slice_allocator_init(
|
408
|
+
&tcp->slice_allocator, tcp->resource_user, tcp_read_allocation_done, tcp);
|
409
|
+
/* Tell network status tracking code about the new endpoint */
|
410
|
+
grpc_network_status_register_endpoint(&tcp->base);
|
411
|
+
|
412
|
+
#ifndef GRPC_UV_TCP_HOLD_LOOP
|
413
|
+
uv_unref((uv_handle_t*)handle);
|
414
|
+
#endif
|
415
|
+
|
416
|
+
grpc_exec_ctx_finish(&exec_ctx);
|
417
|
+
return &tcp->base;
|
418
|
+
}
|
419
|
+
|
420
|
+
#endif /* GRPC_UV */
|