grpc 1.8.7 → 1.9.0.pre1
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 +549 -325
- data/include/grpc/impl/codegen/grpc_types.h +1 -2
- data/include/grpc/impl/codegen/port_platform.h +46 -5
- data/include/grpc/impl/codegen/slice.h +1 -2
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice_buffer.h +1 -2
- data/include/grpc/support/log.h +4 -2
- data/include/grpc/support/thd.h +4 -1
- data/include/grpc/support/tls.h +6 -0
- data/include/grpc/support/tls_gcc.h +5 -40
- data/include/grpc/support/tls_msvc.h +9 -0
- data/include/grpc/support/tls_pthread.h +9 -0
- data/src/core/ext/filters/client_channel/backup_poller.cc +32 -29
- data/src/core/ext/filters/client_channel/backup_poller.h +2 -2
- data/src/core/ext/filters/client_channel/channel_connectivity.cc +26 -32
- data/src/core/ext/filters/client_channel/client_channel.cc +325 -356
- data/src/core/ext/filters/client_channel/client_channel.h +4 -12
- data/src/core/ext/filters/client_channel/client_channel_factory.cc +9 -14
- data/src/core/ext/filters/client_channel/client_channel_factory.h +7 -20
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +7 -10
- data/src/core/ext/filters/client_channel/connector.cc +6 -7
- data/src/core/ext/filters/client_channel/connector.h +6 -16
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +38 -50
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +0 -8
- data/src/core/ext/filters/client_channel/http_proxy.cc +9 -13
- data/src/core/ext/filters/client_channel/http_proxy.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy.cc +72 -94
- data/src/core/ext/filters/client_channel/lb_policy.h +83 -92
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +14 -19
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +474 -591
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +2 -10
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +6 -6
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +0 -8
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +0 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +3 -4
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +9 -12
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +160 -182
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +182 -221
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +24 -35
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -20
- data/src/core/ext/filters/client_channel/lb_policy_factory.cc +6 -9
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +4 -15
- data/src/core/ext/filters/client_channel/lb_policy_registry.cc +3 -3
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -9
- data/src/core/ext/filters/client_channel/parse_address.cc +1 -1
- data/src/core/ext/filters/client_channel/parse_address.h +0 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.cc +6 -8
- data/src/core/ext/filters/client_channel/proxy_mapper.h +6 -16
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +13 -17
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -12
- data/src/core/ext/filters/client_channel/resolver.cc +11 -13
- data/src/core/ext/filters/client_channel/resolver.h +14 -25
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +57 -70
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +23 -31
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +27 -45
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +9 -11
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +53 -66
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +25 -33
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -9
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +26 -35
- data/src/core/ext/filters/client_channel/resolver_factory.cc +2 -3
- data/src/core/ext/filters/client_channel/resolver_factory.h +2 -12
- data/src/core/ext/filters/client_channel/resolver_registry.cc +12 -15
- data/src/core/ext/filters/client_channel/resolver_registry.h +3 -12
- data/src/core/ext/filters/client_channel/retry_throttle.h +0 -8
- data/src/core/ext/filters/client_channel/subchannel.cc +289 -301
- data/src/core/ext/filters/client_channel/subchannel.h +57 -84
- data/src/core/ext/filters/client_channel/subchannel_index.cc +30 -33
- data/src/core/ext/filters/client_channel/subchannel_index.h +4 -16
- data/src/core/ext/filters/client_channel/uri_parser.cc +13 -17
- data/src/core/ext/filters/client_channel/uri_parser.h +1 -10
- data/src/core/ext/filters/deadline/deadline_filter.cc +49 -67
- data/src/core/ext/filters/deadline/deadline_filter.h +4 -14
- data/src/core/ext/filters/http/client/http_client_filter.cc +60 -77
- data/src/core/ext/filters/http/client/http_client_filter.h +0 -8
- data/src/core/ext/filters/http/http_filters_plugin.cc +4 -6
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +63 -79
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +0 -8
- data/src/core/ext/filters/http/server/http_server_filter.cc +57 -71
- data/src/core/ext/filters/http/server/http_server_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +19 -24
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +0 -8
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.cc +3 -3
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +0 -8
- data/src/core/ext/filters/max_age/max_age_filter.cc +49 -62
- data/src/core/ext/filters/max_age/max_age_filter.h +0 -8
- data/src/core/ext/filters/message_size/message_size_filter.cc +23 -29
- data/src/core/ext/filters/message_size/message_size_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +15 -18
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +0 -8
- data/src/core/ext/filters/workarounds/workaround_utils.h +0 -8
- data/src/core/ext/transport/chttp2/alpn/alpn.h +0 -8
- data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +33 -40
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +0 -8
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +15 -17
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +8 -8
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +23 -28
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +50 -57
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +1 -10
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -10
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -9
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -9
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +10 -2
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +516 -636
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +4 -11
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +29 -13
- data/src/core/ext/transport/chttp2/transport/flow_control.h +196 -53
- data/src/core/ext/transport/chttp2/transport/frame.h +0 -8
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +31 -33
- data/src/core/ext/transport/chttp2/transport/frame_data.h +3 -12
- data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +1 -9
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -3
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -3
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +1 -10
- data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +8 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -11
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +63 -81
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -12
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +230 -318
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +6 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.cc +14 -20
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +5 -16
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +0 -7
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +0 -8
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +8 -11
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +4 -13
- data/src/core/ext/transport/chttp2/transport/internal.h +51 -75
- data/src/core/ext/transport/chttp2/transport/parsing.cc +83 -109
- data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
- data/src/core/ext/transport/chttp2/transport/stream_map.h +0 -8
- data/src/core/ext/transport/chttp2/transport/varint.h +0 -8
- data/src/core/ext/transport/chttp2/transport/writing.cc +61 -65
- data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +177 -188
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -8
- data/src/core/lib/backoff/backoff.cc +39 -44
- data/src/core/lib/backoff/backoff.h +61 -57
- data/src/core/lib/channel/channel_args.cc +8 -10
- data/src/core/lib/channel/channel_args.h +4 -13
- data/src/core/lib/channel/channel_stack.cc +19 -27
- data/src/core/lib/channel/channel_stack.h +27 -47
- data/src/core/lib/channel/channel_stack_builder.cc +11 -14
- data/src/core/lib/channel/channel_stack_builder.h +4 -15
- data/src/core/lib/channel/connected_channel.cc +23 -36
- data/src/core/lib/channel/connected_channel.h +1 -10
- data/src/core/lib/channel/handshaker.cc +31 -40
- data/src/core/lib/channel/handshaker.h +14 -25
- data/src/core/lib/channel/handshaker_factory.cc +6 -6
- data/src/core/lib/channel/handshaker_factory.h +5 -15
- data/src/core/lib/channel/handshaker_registry.cc +9 -13
- data/src/core/lib/channel/handshaker_registry.h +2 -11
- data/src/core/lib/compression/algorithm_metadata.h +0 -8
- data/src/core/lib/compression/message_compress.cc +19 -23
- data/src/core/lib/compression/message_compress.h +2 -12
- data/src/core/lib/compression/stream_compression.cc +1 -1
- data/src/core/lib/compression/stream_compression.h +0 -8
- data/src/core/lib/compression/stream_compression_gzip.cc +12 -11
- data/src/core/lib/compression/stream_compression_gzip.h +0 -8
- data/src/core/lib/compression/stream_compression_identity.h +0 -8
- data/src/core/lib/debug/stats.cc +4 -4
- data/src/core/lib/debug/stats.h +9 -19
- data/src/core/lib/debug/stats_data.cc +85 -116
- data/src/core/lib/debug/stats_data.h +236 -312
- data/src/core/lib/debug/trace.cc +1 -1
- data/src/core/lib/debug/trace.h +0 -12
- data/src/core/lib/{support → gpr++}/abstract.h +8 -3
- data/src/core/lib/{support → gpr++}/atomic.h +5 -5
- data/src/core/lib/{support → gpr++}/atomic_with_atm.h +3 -3
- data/src/core/lib/{support → gpr++}/atomic_with_std.h +3 -3
- data/src/core/lib/gpr++/debug_location.h +52 -0
- data/src/core/lib/gpr++/inlined_vector.h +112 -0
- data/src/core/lib/{support → gpr++}/manual_constructor.h +2 -2
- data/src/core/lib/{support → gpr++}/memory.h +3 -3
- data/src/core/lib/gpr++/orphanable.h +171 -0
- data/src/core/lib/gpr++/ref_counted.h +133 -0
- data/src/core/lib/gpr++/ref_counted_ptr.h +99 -0
- data/src/core/lib/{support → gpr}/alloc.cc +0 -0
- data/src/core/lib/{support → gpr}/arena.cc +1 -1
- data/src/core/lib/{support → gpr}/arena.h +3 -11
- data/src/core/lib/{support → gpr}/atm.cc +0 -0
- data/src/core/lib/{support → gpr}/avl.cc +0 -0
- data/src/core/lib/{support → gpr}/cmdline.cc +1 -1
- data/src/core/lib/{support → gpr}/cpu_iphone.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_linux.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/cpu_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/env.h +3 -11
- data/src/core/lib/{support → gpr}/env_linux.cc +2 -2
- data/src/core/lib/{support → gpr}/env_posix.cc +4 -4
- data/src/core/lib/{support → gpr}/env_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.cc +3 -3
- data/src/core/lib/{support → gpr}/fork.h +3 -3
- data/src/core/lib/{support → gpr}/host_port.cc +1 -1
- data/src/core/lib/{support → gpr}/log.cc +3 -3
- data/src/core/lib/{support → gpr}/log_android.cc +3 -3
- data/src/core/lib/{support → gpr}/log_linux.cc +1 -1
- data/src/core/lib/{support → gpr}/log_posix.cc +5 -5
- data/src/core/lib/{support → gpr}/log_windows.cc +3 -3
- data/src/core/lib/{support → gpr}/mpscq.cc +1 -1
- data/src/core/lib/{support → gpr}/mpscq.h +3 -10
- data/src/core/lib/{support → gpr}/murmur_hash.cc +1 -1
- data/src/core/lib/{support → gpr}/murmur_hash.h +3 -11
- data/src/core/lib/{support → gpr}/spinlock.h +3 -3
- data/src/core/lib/{support → gpr}/string.cc +1 -1
- data/src/core/lib/{support → gpr}/string.h +3 -10
- data/src/core/lib/{support → gpr}/string_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/string_util_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/string_windows.cc +1 -1
- data/src/core/lib/{support → gpr}/string_windows.h +3 -11
- data/src/core/lib/{support → gpr}/subprocess_posix.cc +0 -0
- data/src/core/lib/{support → gpr}/subprocess_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/sync.cc +0 -0
- data/src/core/lib/{support → gpr}/sync_posix.cc +10 -1
- data/src/core/lib/{support → gpr}/sync_windows.cc +0 -0
- data/src/core/lib/{support → gpr}/thd.cc +0 -0
- data/src/core/lib/{support → gpr}/thd_internal.h +3 -3
- data/src/core/lib/{support → gpr}/thd_posix.cc +18 -2
- data/src/core/lib/{support → gpr}/thd_windows.cc +2 -1
- data/src/core/lib/{support → gpr}/time.cc +0 -0
- data/src/core/lib/{support → gpr}/time_posix.cc +2 -4
- data/src/core/lib/{support → gpr}/time_precise.cc +1 -1
- data/src/core/lib/{support → gpr}/time_precise.h +3 -11
- data/src/core/lib/{support → gpr}/time_windows.cc +1 -3
- data/src/core/lib/{support → gpr}/tls_pthread.cc +0 -0
- data/src/core/lib/{support → gpr}/tmpfile.h +3 -11
- data/src/core/lib/{support → gpr}/tmpfile_msys.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_posix.cc +2 -2
- data/src/core/lib/{support → gpr}/tmpfile_windows.cc +2 -2
- data/src/core/lib/{support → gpr}/wrap_memcpy.cc +0 -0
- data/src/core/lib/http/format_request.cc +1 -1
- data/src/core/lib/http/format_request.h +0 -8
- data/src/core/lib/http/httpcli.cc +55 -74
- data/src/core/lib/http/httpcli.h +13 -22
- data/src/core/lib/http/httpcli_security_connector.cc +27 -33
- data/src/core/lib/http/parser.h +0 -8
- data/src/core/lib/iomgr/block_annotate.h +10 -17
- data/src/core/lib/iomgr/call_combiner.cc +14 -17
- data/src/core/lib/iomgr/call_combiner.h +16 -34
- data/src/core/lib/iomgr/closure.h +24 -37
- data/src/core/lib/iomgr/combiner.cc +62 -66
- data/src/core/lib/iomgr/combiner.h +6 -16
- data/src/core/lib/iomgr/endpoint.cc +15 -21
- data/src/core/lib/iomgr/endpoint.h +16 -33
- data/src/core/lib/iomgr/endpoint_pair.h +0 -8
- data/src/core/lib/iomgr/endpoint_pair_posix.cc +4 -5
- data/src/core/lib/iomgr/endpoint_pair_windows.cc +4 -6
- data/src/core/lib/iomgr/error.cc +2 -6
- data/src/core/lib/iomgr/error.h +4 -9
- data/src/core/lib/iomgr/error_internal.h +0 -8
- data/src/core/lib/iomgr/ev_epoll1_linux.cc +110 -117
- data/src/core/lib/iomgr/ev_epoll1_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollex_linux.cc +111 -141
- data/src/core/lib/iomgr/ev_epollex_linux.h +0 -8
- data/src/core/lib/iomgr/ev_epollsig_linux.cc +83 -109
- data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -10
- data/src/core/lib/iomgr/ev_poll_posix.cc +103 -125
- data/src/core/lib/iomgr/ev_poll_posix.h +0 -8
- data/src/core/lib/iomgr/ev_posix.cc +35 -50
- data/src/core/lib/iomgr/ev_posix.h +27 -53
- data/src/core/lib/iomgr/exec_ctx.cc +46 -78
- data/src/core/lib/iomgr/exec_ctx.h +127 -60
- data/src/core/lib/iomgr/executor.cc +34 -38
- data/src/core/lib/iomgr/executor.h +3 -11
- data/src/core/lib/iomgr/fork_posix.cc +13 -12
- data/src/core/lib/iomgr/gethostname.h +0 -8
- data/src/core/lib/iomgr/gethostname_sysconf.cc +1 -1
- data/src/core/lib/iomgr/iocp_windows.cc +14 -16
- data/src/core/lib/iomgr/iocp_windows.h +1 -10
- data/src/core/lib/iomgr/iomgr.cc +60 -59
- data/src/core/lib/iomgr/iomgr.h +3 -12
- data/src/core/lib/iomgr/iomgr_internal.h +0 -8
- data/src/core/lib/iomgr/iomgr_uv.cc +2 -3
- data/src/core/lib/iomgr/iomgr_uv.h +0 -8
- data/src/core/lib/iomgr/is_epollexclusive_available.cc +1 -1
- data/src/core/lib/iomgr/load_file.cc +1 -1
- data/src/core/lib/iomgr/load_file.h +0 -8
- data/src/core/lib/iomgr/lockfree_event.cc +7 -8
- data/src/core/lib/iomgr/lockfree_event.h +3 -3
- data/src/core/lib/iomgr/polling_entity.cc +6 -10
- data/src/core/lib/iomgr/polling_entity.h +2 -11
- data/src/core/lib/iomgr/pollset.h +4 -13
- data/src/core/lib/iomgr/pollset_set.h +5 -18
- data/src/core/lib/iomgr/pollset_set_uv.cc +5 -10
- data/src/core/lib/iomgr/pollset_set_windows.cc +5 -10
- data/src/core/lib/iomgr/pollset_uv.cc +8 -9
- data/src/core/lib/iomgr/pollset_uv.h +0 -8
- data/src/core/lib/iomgr/pollset_windows.cc +14 -15
- data/src/core/lib/iomgr/pollset_windows.h +0 -8
- data/src/core/lib/iomgr/port.h +6 -1
- data/src/core/lib/iomgr/resolve_address.h +1 -10
- data/src/core/lib/iomgr/resolve_address_posix.cc +10 -12
- data/src/core/lib/iomgr/resolve_address_uv.cc +7 -8
- data/src/core/lib/iomgr/resolve_address_windows.cc +8 -9
- data/src/core/lib/iomgr/resource_quota.cc +77 -107
- data/src/core/lib/iomgr/resource_quota.h +8 -25
- data/src/core/lib/iomgr/sockaddr_utils.cc +1 -1
- data/src/core/lib/iomgr/sockaddr_utils.h +0 -8
- data/src/core/lib/iomgr/socket_factory_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_factory_posix.h +0 -8
- data/src/core/lib/iomgr/socket_mutator.cc +1 -1
- data/src/core/lib/iomgr/socket_mutator.h +1 -9
- data/src/core/lib/iomgr/socket_utils.h +0 -8
- data/src/core/lib/iomgr/socket_utils_common_posix.cc +1 -1
- data/src/core/lib/iomgr/socket_utils_posix.h +0 -8
- data/src/core/lib/iomgr/socket_windows.cc +8 -11
- data/src/core/lib/iomgr/socket_windows.h +3 -14
- data/src/core/lib/iomgr/tcp_client.h +1 -10
- data/src/core/lib/iomgr/tcp_client_posix.cc +94 -78
- data/src/core/lib/iomgr/tcp_client_posix.h +36 -8
- data/src/core/lib/iomgr/tcp_client_uv.cc +16 -23
- data/src/core/lib/iomgr/tcp_client_windows.cc +22 -25
- data/src/core/lib/iomgr/tcp_posix.cc +131 -153
- data/src/core/lib/iomgr/tcp_posix.h +3 -12
- data/src/core/lib/iomgr/tcp_server.h +6 -17
- data/src/core/lib/iomgr/tcp_server_posix.cc +31 -35
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +0 -8
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -1
- data/src/core/lib/iomgr/tcp_server_uv.cc +23 -34
- data/src/core/lib/iomgr/tcp_server_windows.cc +24 -34
- data/src/core/lib/iomgr/tcp_uv.cc +42 -56
- data/src/core/lib/iomgr/tcp_uv.h +0 -8
- data/src/core/lib/iomgr/tcp_windows.cc +43 -50
- data/src/core/lib/iomgr/tcp_windows.h +1 -9
- data/src/core/lib/iomgr/time_averaged_stats.h +0 -8
- data/src/core/lib/iomgr/timer.h +6 -15
- data/src/core/lib/iomgr/timer_generic.cc +22 -27
- data/src/core/lib/iomgr/timer_heap.h +0 -8
- data/src/core/lib/iomgr/timer_manager.cc +17 -19
- data/src/core/lib/iomgr/timer_manager.h +0 -8
- data/src/core/lib/iomgr/timer_uv.cc +12 -14
- data/src/core/lib/iomgr/udp_server.cc +148 -54
- data/src/core/lib/iomgr/udp_server.h +16 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_cv.cc +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.h +12 -20
- data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +1 -1
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +0 -8
- data/src/core/lib/iomgr/wakeup_fd_posix.h +0 -8
- data/src/core/lib/json/json.h +0 -8
- data/src/core/lib/json/json_reader.h +0 -8
- data/src/core/lib/json/json_writer.h +0 -8
- data/src/core/lib/profiling/basic_timers.cc +3 -2
- data/src/core/lib/profiling/timers.h +0 -8
- data/src/core/lib/security/context/security_context.cc +9 -10
- data/src/core/lib/security/context/security_context.h +0 -8
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +23 -28
- data/src/core/lib/security/credentials/composite/composite_credentials.h +0 -8
- data/src/core/lib/security/credentials/credentials.cc +33 -42
- data/src/core/lib/security/credentials/credentials.h +24 -43
- data/src/core/lib/security/credentials/credentials_metadata.cc +2 -2
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +16 -22
- data/src/core/lib/security/credentials/fake/fake_credentials.h +0 -8
- data/src/core/lib/security/credentials/google_default/credentials_generic.cc +3 -3
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +28 -34
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +0 -8
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +9 -13
- data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
- data/src/core/lib/security/credentials/jwt/json_token.h +0 -8
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +14 -20
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +1 -10
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +56 -72
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +5 -17
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +47 -55
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +3 -12
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +23 -28
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +8 -13
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +0 -8
- data/src/core/lib/security/transport/auth_filters.h +0 -8
- data/src/core/lib/security/transport/client_auth_filter.cc +45 -54
- data/src/core/lib/security/transport/lb_targets_info.cc +2 -2
- data/src/core/lib/security/transport/lb_targets_info.h +0 -8
- data/src/core/lib/security/transport/secure_endpoint.cc +54 -68
- data/src/core/lib/security/transport/secure_endpoint.h +0 -8
- data/src/core/lib/security/transport/security_connector.cc +62 -86
- data/src/core/lib/security/transport/security_connector.h +22 -39
- data/src/core/lib/security/transport/security_handshaker.cc +83 -106
- data/src/core/lib/security/transport/security_handshaker.h +1 -10
- data/src/core/lib/security/transport/server_auth_filter.cc +31 -38
- data/src/core/lib/security/transport/tsi_error.h +0 -8
- data/src/core/lib/security/util/json_util.h +0 -8
- data/src/core/lib/slice/b64.cc +5 -6
- data/src/core/lib/slice/b64.h +3 -12
- data/src/core/lib/slice/percent_encoding.h +0 -8
- data/src/core/lib/slice/slice.cc +8 -9
- data/src/core/lib/slice/slice_buffer.cc +11 -16
- data/src/core/lib/slice/slice_hash_table.cc +5 -7
- data/src/core/lib/slice/slice_hash_table.h +2 -12
- data/src/core/lib/slice/slice_intern.cc +4 -5
- data/src/core/lib/slice/slice_internal.h +4 -15
- data/src/core/lib/slice/slice_string_helpers.cc +1 -1
- data/src/core/lib/slice/slice_string_helpers.h +1 -9
- data/src/core/lib/surface/alarm.cc +11 -14
- data/src/core/lib/surface/alarm_internal.h +0 -8
- data/src/core/lib/surface/byte_buffer.cc +2 -3
- data/src/core/lib/surface/byte_buffer_reader.cc +7 -9
- data/src/core/lib/surface/call.cc +198 -241
- data/src/core/lib/surface/call.h +9 -23
- data/src/core/lib/surface/call_details.cc +3 -4
- data/src/core/lib/surface/call_log_batch.cc +1 -1
- data/src/core/lib/surface/call_test_only.h +0 -8
- data/src/core/lib/surface/channel.cc +53 -64
- data/src/core/lib/surface/channel.h +12 -23
- data/src/core/lib/surface/channel_init.cc +2 -3
- data/src/core/lib/surface/channel_init.h +2 -12
- data/src/core/lib/surface/channel_ping.cc +7 -9
- data/src/core/lib/surface/channel_stack_type.h +0 -8
- data/src/core/lib/surface/completion_queue.cc +158 -176
- data/src/core/lib/surface/completion_queue.h +9 -20
- data/src/core/lib/surface/completion_queue_factory.h +0 -8
- data/src/core/lib/surface/event_string.cc +1 -1
- data/src/core/lib/surface/event_string.h +0 -8
- data/src/core/lib/surface/init.cc +27 -25
- data/src/core/lib/surface/init.h +0 -8
- data/src/core/lib/surface/init_secure.cc +2 -2
- data/src/core/lib/surface/lame_client.cc +30 -33
- data/src/core/lib/surface/lame_client.h +0 -8
- data/src/core/lib/surface/server.cc +151 -203
- data/src/core/lib/surface/server.h +7 -16
- data/src/core/lib/surface/validate_metadata.h +0 -8
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +2 -2
- data/src/core/lib/transport/bdp_estimator.h +1 -1
- data/src/core/lib/transport/byte_stream.cc +24 -38
- data/src/core/lib/transport/byte_stream.h +10 -25
- data/src/core/lib/transport/connectivity_state.cc +9 -13
- data/src/core/lib/transport/connectivity_state.h +4 -14
- data/src/core/lib/transport/error_utils.cc +6 -6
- data/src/core/lib/transport/error_utils.h +2 -11
- data/src/core/lib/transport/metadata.cc +21 -23
- data/src/core/lib/transport/metadata.h +8 -20
- data/src/core/lib/transport/metadata_batch.cc +34 -45
- data/src/core/lib/transport/metadata_batch.h +18 -32
- data/src/core/lib/transport/service_config.cc +11 -15
- data/src/core/lib/transport/service_config.h +3 -13
- data/src/core/lib/transport/static_metadata.cc +1 -1
- data/src/core/lib/transport/static_metadata.h +1 -7
- data/src/core/lib/transport/status_conversion.cc +2 -3
- data/src/core/lib/transport/status_conversion.h +1 -10
- data/src/core/lib/transport/timeout_encoding.cc +1 -1
- data/src/core/lib/transport/timeout_encoding.h +1 -9
- data/src/core/lib/transport/transport.cc +36 -50
- data/src/core/lib/transport/transport.h +28 -30
- data/src/core/lib/transport/transport_impl.h +12 -23
- data/src/core/lib/transport/transport_op_string.cc +2 -2
- data/src/core/plugin_registry/grpc_plugin_registry.cc +34 -34
- data/src/core/tsi/fake_transport_security.cc +7 -10
- data/src/core/tsi/fake_transport_security.h +0 -8
- data/src/core/tsi/gts_transport_security.cc +2 -2
- data/src/core/tsi/gts_transport_security.h +0 -8
- data/src/core/tsi/ssl_transport_security.cc +3 -0
- data/src/core/tsi/ssl_transport_security.h +0 -8
- data/src/core/tsi/ssl_types.h +0 -8
- data/src/core/tsi/transport_security.h +1 -9
- data/src/core/tsi/transport_security_adapter.h +0 -8
- data/src/core/tsi/transport_security_grpc.cc +11 -18
- data/src/core/tsi/transport_security_grpc.h +9 -21
- data/src/core/tsi/transport_security_interface.h +0 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -30
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +2 -48
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/spec/channel_connection_spec.rb +2 -1
- data/src/ruby/spec/client_auth_spec.rb +1 -1
- data/src/ruby/spec/client_server_spec.rb +2 -2
- data/src/ruby/spec/generic/active_call_spec.rb +1 -1
- data/src/ruby/spec/generic/client_stub_spec.rb +4 -4
- data/src/ruby/spec/generic/interceptor_registry_spec.rb +1 -1
- data/src/ruby/spec/generic/rpc_server_spec.rb +12 -12
- data/src/ruby/spec/google_rpc_status_utils_spec.rb +3 -2
- data/src/ruby/spec/pb/health/checker_spec.rb +1 -1
- data/src/ruby/spec/server_spec.rb +9 -9
- data/src/ruby/spec/support/helpers.rb +35 -1
- metadata +68 -66
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +0 -26
- data/include/grpc/support/histogram.h +0 -64
- data/src/core/lib/support/histogram.cc +0 -227
data/src/core/lib/debug/trace.cc
CHANGED
data/src/core/lib/debug/trace.h
CHANGED
@@ -23,25 +23,15 @@
|
|
23
23
|
#include <grpc/support/port_platform.h>
|
24
24
|
#include <stdbool.h>
|
25
25
|
|
26
|
-
#ifdef __cplusplus
|
27
|
-
extern "C" {
|
28
|
-
#endif
|
29
|
-
|
30
26
|
void grpc_tracer_init(const char* env_var_name);
|
31
27
|
void grpc_tracer_shutdown(void);
|
32
28
|
|
33
|
-
#ifdef __cplusplus
|
34
|
-
}
|
35
|
-
#endif
|
36
|
-
|
37
29
|
#if defined(__has_feature)
|
38
30
|
#if __has_feature(thread_sanitizer)
|
39
31
|
#define GRPC_THREADSAFE_TRACER
|
40
32
|
#endif
|
41
33
|
#endif
|
42
34
|
|
43
|
-
#ifdef __cplusplus
|
44
|
-
|
45
35
|
namespace grpc_core {
|
46
36
|
|
47
37
|
class TraceFlag;
|
@@ -110,6 +100,4 @@ class DebugOnlyTraceFlag {
|
|
110
100
|
|
111
101
|
} // namespace grpc_core
|
112
102
|
|
113
|
-
#endif // __cplusplus
|
114
|
-
|
115
103
|
#endif /* GRPC_CORE_LIB_DEBUG_TRACE_H */
|
@@ -16,8 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_LIB_GPRXX_ABSTRACT_H
|
20
|
+
#define GRPC_CORE_LIB_GPRXX_ABSTRACT_H
|
21
21
|
|
22
22
|
// This is needed to support abstract base classes in the c core. Since gRPC
|
23
23
|
// doesn't have a c++ runtime, it will hit a linker error on delete unless
|
@@ -26,4 +26,9 @@
|
|
26
26
|
#define GRPC_ABSTRACT_BASE_CLASS \
|
27
27
|
static void operator delete(void* p) { abort(); }
|
28
28
|
|
29
|
-
|
29
|
+
// gRPC currently can't depend on libstdc++, so we can't use "= 0" for
|
30
|
+
// pure virtual methods. Instead, we use this macro.
|
31
|
+
#define GRPC_ABSTRACT \
|
32
|
+
{ GPR_ASSERT(false); }
|
33
|
+
|
34
|
+
#endif /* GRPC_CORE_LIB_GPRXX_ABSTRACT_H */
|
@@ -16,15 +16,15 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_LIB_GPRXX_ATOMIC_H
|
20
|
+
#define GRPC_CORE_LIB_GPRXX_ATOMIC_H
|
21
21
|
|
22
22
|
#include <grpc/support/port_platform.h>
|
23
23
|
|
24
24
|
#ifdef GPR_HAS_CXX11_ATOMIC
|
25
|
-
#include "src/core/lib/
|
25
|
+
#include "src/core/lib/gpr++/atomic_with_std.h"
|
26
26
|
#else
|
27
|
-
#include "src/core/lib/
|
27
|
+
#include "src/core/lib/gpr++/atomic_with_atm.h"
|
28
28
|
#endif
|
29
29
|
|
30
|
-
#endif /*
|
30
|
+
#endif /* GRPC_CORE_LIB_GPRXX_ATOMIC_H */
|
@@ -16,8 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_ATM_H
|
20
|
+
#define GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_ATM_H
|
21
21
|
|
22
22
|
#include <grpc/support/atm.h>
|
23
23
|
|
@@ -52,4 +52,4 @@ class atomic<bool> {
|
|
52
52
|
|
53
53
|
} // namespace grpc_core
|
54
54
|
|
55
|
-
#endif /*
|
55
|
+
#endif /* GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_ATM_H */
|
@@ -16,8 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_STD_H
|
20
|
+
#define GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_STD_H
|
21
21
|
|
22
22
|
#include <atomic>
|
23
23
|
|
@@ -30,4 +30,4 @@ typedef std::memory_order memory_order;
|
|
30
30
|
|
31
31
|
} // namespace grpc_core
|
32
32
|
|
33
|
-
#endif /*
|
33
|
+
#endif /* GRPC_CORE_LIB_GPRXX_ATOMIC_WITH_STD_H */
|
@@ -0,0 +1,52 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2017 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#ifndef GRPC_CORE_LIB_GPRXX_DEBUG_LOCATION_H
|
20
|
+
#define GRPC_CORE_LIB_GPRXX_DEBUG_LOCATION_H
|
21
|
+
|
22
|
+
namespace grpc_core {
|
23
|
+
|
24
|
+
// Used for tracking file and line where a call is made for debug builds.
|
25
|
+
// No-op for non-debug builds.
|
26
|
+
// Callers can use the DEBUG_LOCATION macro in either case.
|
27
|
+
#ifndef NDEBUG
|
28
|
+
class DebugLocation {
|
29
|
+
public:
|
30
|
+
DebugLocation(const char* file, int line) : file_(file), line_(line) {}
|
31
|
+
bool Log() const { return true; }
|
32
|
+
const char* file() const { return file_; }
|
33
|
+
int line() const { return line_; }
|
34
|
+
|
35
|
+
private:
|
36
|
+
const char* file_;
|
37
|
+
const int line_;
|
38
|
+
};
|
39
|
+
#define DEBUG_LOCATION ::grpc_core::DebugLocation(__FILE__, __LINE__)
|
40
|
+
#else
|
41
|
+
class DebugLocation {
|
42
|
+
public:
|
43
|
+
bool Log() const { return false; }
|
44
|
+
const char* file() const { return nullptr; }
|
45
|
+
int line() const { return -1; }
|
46
|
+
};
|
47
|
+
#define DEBUG_LOCATION ::grpc_core::DebugLocation()
|
48
|
+
#endif
|
49
|
+
|
50
|
+
} // namespace grpc_core
|
51
|
+
|
52
|
+
#endif /* GRPC_CORE_LIB_GPRXX_DEBUG_LOCATION_H */
|
@@ -0,0 +1,112 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2017 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#ifndef GRPC_CORE_LIB_GPRXX_INLINED_VECTOR_H
|
20
|
+
#define GRPC_CORE_LIB_GPRXX_INLINED_VECTOR_H
|
21
|
+
|
22
|
+
#include <cassert>
|
23
|
+
|
24
|
+
#include "src/core/lib/gpr++/memory.h"
|
25
|
+
|
26
|
+
namespace grpc_core {
|
27
|
+
|
28
|
+
// NOTE: We eventually want to use absl::InlinedVector here. However,
|
29
|
+
// there are currently build problems that prevent us from using absl.
|
30
|
+
// In the interim, we define a custom implementation as a place-holder,
|
31
|
+
// with the intent to eventually replace this with the absl
|
32
|
+
// implementation.
|
33
|
+
//
|
34
|
+
// This place-holder implementation does not implement the full set of
|
35
|
+
// functionality from the absl version; it has just the methods that we
|
36
|
+
// currently happen to need in gRPC. If additional functionality is
|
37
|
+
// needed before this gets replaced with the absl version, it can be
|
38
|
+
// added, with the following proviso:
|
39
|
+
//
|
40
|
+
// ANY METHOD ADDED HERE MUST COMPLY WITH THE INTERFACE IN THE absl
|
41
|
+
// IMPLEMENTATION!
|
42
|
+
//
|
43
|
+
// TODO(ctiller, nnoble, roth): Replace this with absl::InlinedVector
|
44
|
+
// once we integrate absl into the gRPC build system in a usable way.
|
45
|
+
template <typename T, size_t N>
|
46
|
+
class InlinedVector {
|
47
|
+
public:
|
48
|
+
InlinedVector() {}
|
49
|
+
~InlinedVector() {
|
50
|
+
for (size_t i = 0; i < size_ && i < N; ++i) {
|
51
|
+
T& value = *reinterpret_cast<T*>(inline_ + i);
|
52
|
+
value.~T();
|
53
|
+
}
|
54
|
+
if (size_ > N) { // Avoid subtracting two signed values.
|
55
|
+
for (size_t i = 0; i < size_ - N; ++i) {
|
56
|
+
dynamic_[i].~T();
|
57
|
+
}
|
58
|
+
}
|
59
|
+
gpr_free(dynamic_);
|
60
|
+
}
|
61
|
+
|
62
|
+
// For now, we do not support copying.
|
63
|
+
InlinedVector(const InlinedVector&) = delete;
|
64
|
+
InlinedVector& operator=(const InlinedVector&) = delete;
|
65
|
+
|
66
|
+
T& operator[](size_t offset) {
|
67
|
+
assert(offset < size_);
|
68
|
+
if (offset < N) {
|
69
|
+
return *reinterpret_cast<T*>(inline_ + offset);
|
70
|
+
} else {
|
71
|
+
return dynamic_[offset - N];
|
72
|
+
}
|
73
|
+
}
|
74
|
+
|
75
|
+
template <typename... Args>
|
76
|
+
void emplace_back(Args&&... args) {
|
77
|
+
if (size_ < N) {
|
78
|
+
new (&inline_[size_]) T(std::forward<Args>(args)...);
|
79
|
+
} else {
|
80
|
+
if (size_ - N == dynamic_capacity_) {
|
81
|
+
size_t new_capacity =
|
82
|
+
dynamic_capacity_ == 0 ? 2 : dynamic_capacity_ * 2;
|
83
|
+
T* new_dynamic = static_cast<T*>(gpr_malloc(sizeof(T) * new_capacity));
|
84
|
+
for (size_t i = 0; i < dynamic_capacity_; ++i) {
|
85
|
+
new (&new_dynamic[i]) T(std::move(dynamic_[i]));
|
86
|
+
dynamic_[i].~T();
|
87
|
+
}
|
88
|
+
gpr_free(dynamic_);
|
89
|
+
dynamic_ = new_dynamic;
|
90
|
+
dynamic_capacity_ = new_capacity;
|
91
|
+
}
|
92
|
+
new (&dynamic_[size_ - N]) T(std::forward<Args>(args)...);
|
93
|
+
}
|
94
|
+
++size_;
|
95
|
+
}
|
96
|
+
|
97
|
+
void push_back(const T& value) { emplace_back(value); }
|
98
|
+
|
99
|
+
void push_back(T&& value) { emplace_back(std::move(value)); }
|
100
|
+
|
101
|
+
size_t size() const { return size_; }
|
102
|
+
|
103
|
+
private:
|
104
|
+
typename std::aligned_storage<sizeof(T)>::type inline_[N];
|
105
|
+
T* dynamic_ = nullptr;
|
106
|
+
size_t size_ = 0;
|
107
|
+
size_t dynamic_capacity_ = 0;
|
108
|
+
};
|
109
|
+
|
110
|
+
} // namespace grpc_core
|
111
|
+
|
112
|
+
#endif /* GRPC_CORE_LIB_GPRXX_INLINED_VECTOR_H */
|
@@ -16,8 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_LIB_GPRXX_MANUAL_CONSTRUCTOR_H
|
20
|
+
#define GRPC_CORE_LIB_GPRXX_MANUAL_CONSTRUCTOR_H
|
21
21
|
|
22
22
|
// manually construct a region of memory with some type
|
23
23
|
|
@@ -16,8 +16,8 @@
|
|
16
16
|
*
|
17
17
|
*/
|
18
18
|
|
19
|
-
#ifndef
|
20
|
-
#define
|
19
|
+
#ifndef GRPC_CORE_LIB_GPRXX_MEMORY_H
|
20
|
+
#define GRPC_CORE_LIB_GPRXX_MEMORY_H
|
21
21
|
|
22
22
|
#include <grpc/support/alloc.h>
|
23
23
|
|
@@ -97,4 +97,4 @@ class Allocator {
|
|
97
97
|
|
98
98
|
} // namespace grpc_core
|
99
99
|
|
100
|
-
#endif /*
|
100
|
+
#endif /* GRPC_CORE_LIB_GPRXX_MEMORY_H */
|
@@ -0,0 +1,171 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2017 gRPC authors.
|
4
|
+
*
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
* you may not use this file except in compliance with the License.
|
7
|
+
* You may obtain a copy of the License at
|
8
|
+
*
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
*
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
* See the License for the specific language governing permissions and
|
15
|
+
* limitations under the License.
|
16
|
+
*
|
17
|
+
*/
|
18
|
+
|
19
|
+
#ifndef GRPC_CORE_LIB_GPRXX_ORPHANABLE_H
|
20
|
+
#define GRPC_CORE_LIB_GPRXX_ORPHANABLE_H
|
21
|
+
|
22
|
+
#include <grpc/support/log.h>
|
23
|
+
#include <grpc/support/sync.h>
|
24
|
+
|
25
|
+
#include <memory>
|
26
|
+
|
27
|
+
#include "src/core/lib/debug/trace.h"
|
28
|
+
#include "src/core/lib/gpr++/abstract.h"
|
29
|
+
#include "src/core/lib/gpr++/debug_location.h"
|
30
|
+
#include "src/core/lib/gpr++/memory.h"
|
31
|
+
|
32
|
+
namespace grpc_core {
|
33
|
+
|
34
|
+
// A base class for orphanable objects, which have one external owner
|
35
|
+
// but are not necessarily destroyed immediately when the external owner
|
36
|
+
// gives up ownership. Instead, the owner calls the object's Orphan()
|
37
|
+
// method, and the object then takes responsibility for its own cleanup
|
38
|
+
// and destruction.
|
39
|
+
class Orphanable {
|
40
|
+
public:
|
41
|
+
// Gives up ownership of the object. The implementation must arrange
|
42
|
+
// to eventually destroy the object without further interaction from the
|
43
|
+
// caller.
|
44
|
+
virtual void Orphan() GRPC_ABSTRACT;
|
45
|
+
|
46
|
+
// Not copyable or movable.
|
47
|
+
Orphanable(const Orphanable&) = delete;
|
48
|
+
Orphanable& operator=(const Orphanable&) = delete;
|
49
|
+
|
50
|
+
GRPC_ABSTRACT_BASE_CLASS
|
51
|
+
|
52
|
+
protected:
|
53
|
+
Orphanable() {}
|
54
|
+
virtual ~Orphanable() {}
|
55
|
+
};
|
56
|
+
|
57
|
+
template <typename T>
|
58
|
+
class OrphanableDelete {
|
59
|
+
public:
|
60
|
+
void operator()(T* p) { p->Orphan(); }
|
61
|
+
};
|
62
|
+
|
63
|
+
template <typename T, typename Deleter = OrphanableDelete<T>>
|
64
|
+
using OrphanablePtr = std::unique_ptr<T, Deleter>;
|
65
|
+
|
66
|
+
template <typename T, typename... Args>
|
67
|
+
inline OrphanablePtr<T> MakeOrphanable(Args&&... args) {
|
68
|
+
return OrphanablePtr<T>(New<T>(std::forward<Args>(args)...));
|
69
|
+
}
|
70
|
+
|
71
|
+
// A type of Orphanable with internal ref-counting.
|
72
|
+
class InternallyRefCounted : public Orphanable {
|
73
|
+
public:
|
74
|
+
// Not copyable nor movable.
|
75
|
+
InternallyRefCounted(const InternallyRefCounted&) = delete;
|
76
|
+
InternallyRefCounted& operator=(const InternallyRefCounted&) = delete;
|
77
|
+
|
78
|
+
GRPC_ABSTRACT_BASE_CLASS
|
79
|
+
|
80
|
+
protected:
|
81
|
+
InternallyRefCounted() { gpr_ref_init(&refs_, 1); }
|
82
|
+
virtual ~InternallyRefCounted() {}
|
83
|
+
|
84
|
+
void Ref() { gpr_ref(&refs_); }
|
85
|
+
|
86
|
+
void Unref() {
|
87
|
+
if (gpr_unref(&refs_)) {
|
88
|
+
Delete(this);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
// Allow Delete() to access destructor.
|
93
|
+
template <typename T>
|
94
|
+
friend void Delete(T*);
|
95
|
+
|
96
|
+
private:
|
97
|
+
gpr_refcount refs_;
|
98
|
+
};
|
99
|
+
|
100
|
+
// An alternative version of the InternallyRefCounted base class that
|
101
|
+
// supports tracing. This is intended to be used in cases where the
|
102
|
+
// object will be handled both by idiomatic C++ code using smart
|
103
|
+
// pointers and legacy code that is manually calling Ref() and Unref().
|
104
|
+
// Once all of our code is converted to idiomatic C++, we may be able to
|
105
|
+
// eliminate this class.
|
106
|
+
class InternallyRefCountedWithTracing : public Orphanable {
|
107
|
+
public:
|
108
|
+
// Not copyable nor movable.
|
109
|
+
InternallyRefCountedWithTracing(const InternallyRefCountedWithTracing&) =
|
110
|
+
delete;
|
111
|
+
InternallyRefCountedWithTracing& operator=(
|
112
|
+
const InternallyRefCountedWithTracing&) = delete;
|
113
|
+
|
114
|
+
GRPC_ABSTRACT_BASE_CLASS
|
115
|
+
|
116
|
+
protected:
|
117
|
+
// Allow Delete() to access destructor.
|
118
|
+
template <typename T>
|
119
|
+
friend void Delete(T*);
|
120
|
+
|
121
|
+
InternallyRefCountedWithTracing()
|
122
|
+
: InternallyRefCountedWithTracing(static_cast<TraceFlag*>(nullptr)) {}
|
123
|
+
|
124
|
+
explicit InternallyRefCountedWithTracing(TraceFlag* trace_flag)
|
125
|
+
: trace_flag_(trace_flag) {
|
126
|
+
gpr_ref_init(&refs_, 1);
|
127
|
+
}
|
128
|
+
|
129
|
+
#ifdef NDEBUG
|
130
|
+
explicit InternallyRefCountedWithTracing(DebugOnlyTraceFlag* trace_flag)
|
131
|
+
: InternallyRefCountedWithTracing() {}
|
132
|
+
#endif
|
133
|
+
|
134
|
+
virtual ~InternallyRefCountedWithTracing() {}
|
135
|
+
|
136
|
+
void Ref() { gpr_ref(&refs_); }
|
137
|
+
|
138
|
+
void Ref(const DebugLocation& location, const char* reason) {
|
139
|
+
if (location.Log() && trace_flag_ != nullptr && trace_flag_->enabled()) {
|
140
|
+
gpr_atm old_refs = gpr_atm_no_barrier_load(&refs_.count);
|
141
|
+
gpr_log(GPR_DEBUG, "%s:%p %s:%d ref %" PRIdPTR " -> %" PRIdPTR " %s",
|
142
|
+
trace_flag_->name(), this, location.file(), location.line(),
|
143
|
+
old_refs, old_refs + 1, reason);
|
144
|
+
}
|
145
|
+
Ref();
|
146
|
+
}
|
147
|
+
|
148
|
+
void Unref() {
|
149
|
+
if (gpr_unref(&refs_)) {
|
150
|
+
Delete(this);
|
151
|
+
}
|
152
|
+
}
|
153
|
+
|
154
|
+
void Unref(const DebugLocation& location, const char* reason) {
|
155
|
+
if (location.Log() && trace_flag_ != nullptr && trace_flag_->enabled()) {
|
156
|
+
gpr_atm old_refs = gpr_atm_no_barrier_load(&refs_.count);
|
157
|
+
gpr_log(GPR_DEBUG, "%s:%p %s:%d unref %" PRIdPTR " -> %" PRIdPTR " %s",
|
158
|
+
trace_flag_->name(), this, location.file(), location.line(),
|
159
|
+
old_refs, old_refs - 1, reason);
|
160
|
+
}
|
161
|
+
Unref();
|
162
|
+
}
|
163
|
+
|
164
|
+
private:
|
165
|
+
TraceFlag* trace_flag_ = nullptr;
|
166
|
+
gpr_refcount refs_;
|
167
|
+
};
|
168
|
+
|
169
|
+
} // namespace grpc_core
|
170
|
+
|
171
|
+
#endif /* GRPC_CORE_LIB_GPRXX_ORPHANABLE_H */
|