grpc 1.7.3 → 1.8.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of grpc might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Makefile +2106 -2116
- data/include/grpc/census.h +1 -432
- data/include/grpc/compression.h +9 -9
- data/include/grpc/grpc.h +115 -98
- data/include/grpc/grpc_cronet.h +3 -3
- data/include/grpc/grpc_posix.h +4 -4
- data/include/grpc/grpc_security.h +160 -88
- data/include/grpc/grpc_security_constants.h +7 -0
- data/include/grpc/impl/codegen/atm.h +9 -1
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +13 -4
- data/include/grpc/impl/codegen/atm_gcc_sync.h +6 -5
- data/include/grpc/impl/codegen/atm_windows.h +23 -22
- data/include/grpc/impl/codegen/byte_buffer.h +14 -14
- data/include/grpc/impl/codegen/byte_buffer_reader.h +2 -2
- data/include/grpc/impl/codegen/connectivity_state.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +32 -28
- data/include/grpc/impl/codegen/port_platform.h +48 -0
- data/include/grpc/impl/codegen/slice.h +10 -10
- data/include/grpc/impl/codegen/sync_generic.h +9 -3
- data/include/grpc/slice.h +16 -17
- data/include/grpc/slice_buffer.h +22 -22
- data/include/grpc/support/alloc.h +11 -11
- data/include/grpc/support/avl.h +28 -20
- data/include/grpc/support/cmdline.h +13 -13
- data/include/grpc/support/histogram.h +17 -17
- data/include/grpc/support/host_port.h +2 -2
- data/include/grpc/support/log.h +9 -9
- data/include/grpc/support/log_windows.h +1 -1
- data/include/grpc/support/string_util.h +2 -2
- data/include/grpc/support/subprocess.h +5 -5
- data/include/grpc/support/sync.h +43 -27
- data/include/grpc/support/thd.h +6 -6
- data/include/grpc/support/tls_gcc.h +1 -1
- data/include/grpc/support/tls_pthread.h +1 -1
- data/src/core/ext/census/{grpc_context.c → grpc_context.cc} +5 -8
- data/src/core/ext/filters/client_channel/backup_poller.cc +165 -0
- data/src/core/ext/{census/grpc_filter.h → filters/client_channel/backup_poller.h} +12 -7
- data/src/core/ext/filters/client_channel/{channel_connectivity.c → channel_connectivity.cc} +45 -42
- data/src/core/ext/filters/client_channel/{client_channel.c → client_channel.cc} +452 -417
- data/src/core/ext/filters/client_channel/client_channel.h +16 -8
- data/src/core/ext/filters/client_channel/{client_channel_factory.c → client_channel_factory.cc} +0 -0
- data/src/core/ext/filters/client_channel/client_channel_factory.h +29 -21
- data/src/core/ext/filters/client_channel/{client_channel_plugin.c → client_channel_plugin.cc} +15 -19
- data/src/core/ext/filters/client_channel/{connector.c → connector.cc} +0 -0
- data/src/core/ext/filters/client_channel/connector.h +29 -21
- data/src/core/ext/filters/client_channel/{http_connect_handshaker.c → http_connect_handshaker.cc} +10 -10
- data/src/core/ext/filters/client_channel/http_connect_handshaker.h +8 -0
- data/src/core/ext/filters/client_channel/{http_proxy.c → http_proxy.cc} +14 -14
- data/src/core/ext/filters/client_channel/http_proxy.h +8 -0
- data/src/core/ext/filters/client_channel/{lb_policy.c → lb_policy.cc} +47 -48
- data/src/core/ext/filters/client_channel/lb_policy.h +76 -70
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{client_load_reporting_filter.c → client_load_reporting_filter.cc} +28 -29
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb.c → grpclb.cc} +554 -563
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +17 -9
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_channel_secure.c → grpclb_channel_secure.cc} +17 -17
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{grpclb_client_stats.c → grpclb_client_stats.cc} +3 -3
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +9 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/{load_balancer_api.c → load_balancer_api.cc} +64 -67
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +20 -21
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +599 -0
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +695 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +270 -0
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +153 -0
- data/src/core/ext/filters/client_channel/{lb_policy_factory.c → lb_policy_factory.cc} +10 -10
- data/src/core/ext/filters/client_channel/lb_policy_factory.h +48 -40
- data/src/core/ext/filters/client_channel/{lb_policy_registry.c → lb_policy_registry.cc} +9 -9
- data/src/core/ext/filters/client_channel/lb_policy_registry.h +11 -3
- data/src/core/ext/filters/client_channel/{parse_address.c → parse_address.cc} +24 -24
- data/src/core/ext/filters/client_channel/parse_address.h +14 -6
- data/src/core/ext/filters/client_channel/{proxy_mapper.c → proxy_mapper.cc} +0 -0
- data/src/core/ext/filters/client_channel/proxy_mapper.h +8 -0
- data/src/core/ext/filters/client_channel/{proxy_mapper_registry.c → proxy_mapper_registry.cc} +0 -0
- data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +8 -0
- data/src/core/ext/filters/client_channel/{resolver.c → resolver.cc} +21 -23
- data/src/core/ext/filters/client_channel/resolver.h +33 -27
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{dns_resolver_ares.c → dns_resolver_ares.cc} +133 -133
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +18 -9
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_ev_driver_posix.c → grpc_ares_ev_driver_posix.cc} +58 -56
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/{grpc_ares_wrapper.c → grpc_ares_wrapper.cc} +118 -115
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +23 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +60 -0
- data/src/core/ext/filters/client_channel/resolver/dns/native/{dns_resolver.c → dns_resolver.cc} +100 -94
- data/src/core/ext/filters/client_channel/resolver/fake/{fake_resolver.c → fake_resolver.cc} +14 -14
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +9 -1
- data/src/core/ext/filters/client_channel/resolver/sockaddr/{sockaddr_resolver.c → sockaddr_resolver.cc} +60 -60
- data/src/core/ext/filters/client_channel/{resolver_factory.c → resolver_factory.cc} +2 -2
- data/src/core/ext/filters/client_channel/resolver_factory.h +27 -19
- data/src/core/ext/filters/client_channel/{resolver_registry.c → resolver_registry.cc} +35 -35
- data/src/core/ext/filters/client_channel/resolver_registry.h +18 -10
- data/src/core/ext/filters/client_channel/{retry_throttle.c → retry_throttle.cc} +10 -10
- data/src/core/ext/filters/client_channel/retry_throttle.h +8 -0
- data/src/core/ext/filters/client_channel/{subchannel.c → subchannel.cc} +210 -213
- data/src/core/ext/filters/client_channel/subchannel.h +68 -60
- data/src/core/ext/filters/client_channel/{subchannel_index.c → subchannel_index.cc} +52 -52
- data/src/core/ext/filters/client_channel/subchannel_index.h +22 -14
- data/src/core/ext/filters/client_channel/{uri_parser.c → uri_parser.cc} +29 -27
- data/src/core/ext/filters/client_channel/uri_parser.h +18 -10
- data/src/core/ext/filters/deadline/{deadline_filter.c → deadline_filter.cc} +12 -15
- data/src/core/ext/filters/deadline/deadline_filter.h +11 -2
- data/src/core/ext/filters/http/client/{http_client_filter.c → http_client_filter.cc} +83 -83
- data/src/core/ext/filters/http/client/http_client_filter.h +8 -0
- data/src/core/ext/filters/http/{http_filters_plugin.c → http_filters_plugin.cc} +20 -21
- data/src/core/ext/filters/http/message_compress/{message_compress_filter.c → message_compress_filter.cc} +84 -83
- data/src/core/ext/filters/http/message_compress/message_compress_filter.h +9 -1
- data/src/core/ext/filters/http/server/{http_server_filter.c → http_server_filter.cc} +80 -78
- data/src/core/ext/filters/http/server/http_server_filter.h +8 -0
- data/src/core/ext/filters/load_reporting/{server_load_reporting_filter.c → server_load_reporting_filter.cc} +29 -29
- data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +9 -1
- data/src/core/ext/filters/load_reporting/{server_load_reporting_plugin.c → server_load_reporting_plugin.cc} +11 -11
- data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +13 -5
- data/src/core/ext/filters/max_age/{max_age_filter.c → max_age_filter.cc} +46 -56
- data/src/core/ext/filters/max_age/max_age_filter.h +8 -0
- data/src/core/ext/filters/message_size/{message_size_filter.c → message_size_filter.cc} +62 -40
- data/src/core/ext/filters/message_size/message_size_filter.h +8 -0
- data/src/core/ext/filters/workarounds/{workaround_cronet_compression_filter.c → workaround_cronet_compression_filter.cc} +11 -11
- data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +8 -0
- data/src/core/ext/filters/workarounds/{workaround_utils.c → workaround_utils.cc} +7 -7
- data/src/core/ext/filters/workarounds/workaround_utils.h +9 -1
- data/src/core/ext/transport/chttp2/alpn/{alpn.c → alpn.cc} +3 -3
- data/src/core/ext/transport/chttp2/alpn/alpn.h +10 -2
- data/src/core/ext/transport/chttp2/client/{chttp2_connector.c → chttp2_connector.cc} +49 -45
- data/src/core/ext/transport/chttp2/client/chttp2_connector.h +8 -0
- data/src/core/ext/transport/chttp2/client/insecure/{channel_create.c → channel_create.cc} +28 -27
- data/src/core/ext/transport/chttp2/client/insecure/{channel_create_posix.c → channel_create_posix.cc} +14 -13
- data/src/core/ext/transport/chttp2/client/secure/{secure_channel_create.c → secure_channel_create.cc} +68 -66
- data/src/core/ext/transport/chttp2/server/{chttp2_server.c → chttp2_server.cc} +76 -77
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +11 -3
- data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2.c → server_chttp2.cc} +3 -3
- data/src/core/ext/transport/chttp2/server/insecure/{server_chttp2_posix.c → server_chttp2_posix.cc} +13 -12
- data/src/core/ext/transport/chttp2/server/secure/{server_secure_chttp2.c → server_secure_chttp2.cc} +12 -10
- data/src/core/ext/transport/chttp2/transport/{bin_decoder.c → bin_decoder.cc} +7 -7
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +15 -7
- data/src/core/ext/transport/chttp2/transport/{bin_encoder.c → bin_encoder.cc} +11 -11
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -0
- data/src/core/ext/transport/chttp2/transport/{chttp2_plugin.c → chttp2_plugin.cc} +2 -9
- data/src/core/ext/transport/chttp2/transport/{chttp2_transport.c → chttp2_transport.cc} +778 -778
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +14 -10
- data/src/core/ext/transport/chttp2/transport/flow_control.cc +385 -0
- data/src/core/ext/transport/chttp2/transport/flow_control.h +337 -0
- data/src/core/ext/transport/chttp2/transport/frame.h +8 -0
- data/src/core/ext/transport/chttp2/transport/{frame_data.c → frame_data.cc} +34 -34
- data/src/core/ext/transport/chttp2/transport/frame_data.h +25 -17
- data/src/core/ext/transport/chttp2/transport/{frame_goaway.c → frame_goaway.cc} +18 -18
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +18 -10
- data/src/core/ext/transport/chttp2/transport/{frame_ping.c → frame_ping.cc} +18 -19
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +12 -4
- data/src/core/ext/transport/chttp2/transport/{frame_rst_stream.c → frame_rst_stream.cc} +16 -16
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +16 -8
- data/src/core/ext/transport/chttp2/transport/{frame_settings.c → frame_settings.cc} +23 -24
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +17 -9
- data/src/core/ext/transport/chttp2/transport/{frame_window_update.c → frame_window_update.cc} +22 -24
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +14 -6
- data/src/core/ext/transport/chttp2/transport/{hpack_encoder.c → hpack_encoder.cc} +206 -161
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +23 -13
- data/src/core/ext/transport/chttp2/transport/{hpack_parser.c → hpack_parser.cc} +340 -334
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +30 -22
- data/src/core/ext/transport/chttp2/transport/{hpack_table.c → hpack_table.cc} +25 -25
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +19 -11
- data/src/core/ext/transport/chttp2/transport/{http2_settings.c → http2_settings.cc} +1 -1
- data/src/core/ext/transport/chttp2/transport/http2_settings.h +10 -2
- data/src/core/ext/transport/chttp2/transport/{huffsyms.c → huffsyms.cc} +0 -0
- data/src/core/ext/transport/chttp2/transport/huffsyms.h +8 -0
- data/src/core/ext/transport/chttp2/transport/{incoming_metadata.c → incoming_metadata.cc} +14 -13
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +18 -10
- data/src/core/ext/transport/chttp2/transport/internal.h +214 -340
- data/src/core/ext/transport/chttp2/transport/{parsing.c → parsing.cc} +152 -141
- data/src/core/ext/transport/chttp2/transport/{stream_lists.c → stream_lists.cc} +53 -53
- data/src/core/ext/transport/chttp2/transport/{stream_map.c → stream_map.cc} +35 -34
- data/src/core/ext/transport/chttp2/transport/stream_map.h +22 -14
- data/src/core/ext/transport/chttp2/transport/{varint.c → varint.cc} +0 -0
- data/src/core/ext/transport/chttp2/transport/varint.h +8 -0
- data/src/core/ext/transport/chttp2/transport/writing.cc +636 -0
- data/src/core/ext/transport/inproc/{inproc_plugin.c → inproc_plugin.cc} +5 -6
- data/src/core/ext/transport/inproc/{inproc_transport.c → inproc_transport.cc} +479 -544
- data/src/core/ext/transport/inproc/inproc_transport.h +4 -4
- data/src/core/lib/backoff/backoff.cc +80 -0
- data/src/core/lib/backoff/backoff.h +83 -0
- data/src/core/lib/channel/{channel_args.c → channel_args.cc} +92 -92
- data/src/core/lib/channel/channel_args.h +45 -37
- data/src/core/lib/channel/{channel_stack.c → channel_stack.cc} +67 -68
- data/src/core/lib/channel/channel_stack.h +76 -75
- data/src/core/lib/channel/{channel_stack_builder.c → channel_stack_builder.cc} +91 -91
- data/src/core/lib/channel/channel_stack_builder.h +45 -45
- data/src/core/lib/channel/{connected_channel.c → connected_channel.cc} +70 -70
- data/src/core/lib/channel/connected_channel.h +12 -4
- data/src/core/lib/channel/context.h +2 -2
- data/src/core/lib/channel/{handshaker.c → handshaker.cc} +7 -9
- data/src/core/lib/channel/handshaker.h +9 -1
- data/src/core/lib/channel/{handshaker_factory.c → handshaker_factory.cc} +7 -7
- data/src/core/lib/channel/handshaker_factory.h +18 -10
- data/src/core/lib/channel/{handshaker_registry.c → handshaker_registry.cc} +0 -0
- data/src/core/lib/channel/handshaker_registry.h +8 -0
- data/src/core/lib/compression/algorithm_metadata.h +8 -0
- data/src/core/lib/compression/{compression.c → compression.cc} +9 -9
- data/src/core/lib/compression/{message_compress.c → message_compress.cc} +0 -0
- data/src/core/lib/compression/message_compress.h +8 -0
- data/src/core/lib/compression/{stream_compression.c → stream_compression.cc} +12 -12
- data/src/core/lib/compression/stream_compression.h +27 -19
- data/src/core/lib/compression/{stream_compression_gzip.c → stream_compression_gzip.cc} +35 -36
- data/src/core/lib/compression/stream_compression_gzip.h +8 -0
- data/src/core/lib/compression/{stream_compression_identity.c → stream_compression_identity.cc} +19 -20
- data/src/core/lib/compression/stream_compression_identity.h +8 -0
- data/src/core/lib/debug/{stats.c → stats.cc} +19 -19
- data/src/core/lib/debug/stats.h +17 -9
- data/src/core/lib/debug/{stats_data.c → stats_data.cc} +45 -22
- data/src/core/lib/debug/stats_data.h +58 -19
- data/src/core/lib/debug/trace.cc +142 -0
- data/src/core/lib/debug/trace.h +74 -14
- data/src/core/lib/http/{format_request.c → format_request.cc} +10 -10
- data/src/core/lib/http/format_request.h +12 -4
- data/src/core/lib/http/{httpcli.c → httpcli.cc} +80 -80
- data/src/core/lib/http/httpcli.h +41 -33
- data/src/core/lib/http/{httpcli_security_connector.c → httpcli_security_connector.cc} +69 -55
- data/src/core/lib/http/{parser.c → parser.cc} +42 -42
- data/src/core/lib/http/parser.h +28 -20
- data/src/core/lib/{support → iomgr}/block_annotate.h +17 -8
- data/src/core/lib/iomgr/{call_combiner.c → call_combiner.cc} +29 -17
- data/src/core/lib/iomgr/call_combiner.h +9 -1
- data/src/core/lib/iomgr/closure.h +220 -62
- data/src/core/lib/iomgr/{combiner.c → combiner.cc} +63 -62
- data/src/core/lib/iomgr/combiner.h +16 -8
- data/src/core/lib/iomgr/{endpoint.c → endpoint.cc} +6 -0
- data/src/core/lib/iomgr/endpoint.h +47 -32
- data/src/core/lib/iomgr/endpoint_pair.h +12 -4
- data/src/core/lib/iomgr/{endpoint_pair_posix.c → endpoint_pair_posix.cc} +3 -3
- data/src/core/lib/iomgr/{endpoint_pair_uv.c → endpoint_pair_uv.cc} +2 -2
- data/src/core/lib/iomgr/{endpoint_pair_windows.c → endpoint_pair_windows.cc} +6 -6
- data/src/core/lib/iomgr/{error.c → error.cc} +125 -124
- data/src/core/lib/iomgr/error.h +32 -27
- data/src/core/lib/iomgr/error_internal.h +11 -2
- data/src/core/lib/iomgr/{ev_epoll1_linux.c → ev_epoll1_linux.cc} +214 -215
- data/src/core/lib/iomgr/ev_epoll1_linux.h +9 -1
- data/src/core/lib/iomgr/ev_epollex_linux.cc +1488 -0
- data/src/core/lib/iomgr/ev_epollex_linux.h +9 -1
- data/src/core/lib/iomgr/{ev_epollsig_linux.c → ev_epollsig_linux.cc} +304 -305
- data/src/core/lib/iomgr/ev_epollsig_linux.h +12 -4
- data/src/core/lib/iomgr/{ev_poll_posix.c → ev_poll_posix.cc} +272 -283
- data/src/core/lib/iomgr/ev_poll_posix.h +10 -2
- data/src/core/lib/iomgr/ev_posix.cc +288 -0
- data/src/core/lib/iomgr/ev_posix.h +75 -67
- data/src/core/lib/iomgr/{ev_windows.c → ev_windows.cc} +2 -2
- data/src/core/lib/iomgr/exec_ctx.cc +177 -0
- data/src/core/lib/iomgr/exec_ctx.h +35 -13
- data/src/core/lib/iomgr/{executor.c → executor.cc} +34 -35
- data/src/core/lib/iomgr/executor.h +12 -4
- data/src/core/lib/iomgr/{fork_posix.c → fork_posix.cc} +0 -0
- data/src/core/lib/iomgr/{fork_windows.c → fork_windows.cc} +0 -0
- data/src/core/lib/iomgr/gethostname.h +9 -1
- data/src/core/lib/iomgr/{gethostname_fallback.c → gethostname_fallback.cc} +2 -1
- data/src/core/lib/iomgr/{gethostname_host_name_max.c → gethostname_host_name_max.cc} +4 -3
- data/src/core/lib/iomgr/{gethostname_sysconf.c → gethostname_sysconf.cc} +3 -2
- data/src/core/lib/iomgr/{iocp_windows.c → iocp_windows.cc} +23 -25
- data/src/core/lib/iomgr/iocp_windows.h +17 -3
- data/src/core/lib/iomgr/{iomgr.c → iomgr.cc} +25 -19
- data/src/core/lib/iomgr/iomgr.h +11 -3
- data/src/core/lib/iomgr/iomgr_internal.h +13 -5
- data/src/core/lib/iomgr/{iomgr_posix.c → iomgr_posix.cc} +0 -1
- data/src/core/lib/iomgr/{iomgr_uv.c → iomgr_uv.cc} +1 -1
- data/src/core/lib/iomgr/iomgr_uv.h +8 -0
- data/src/core/lib/iomgr/{iomgr_windows.c → iomgr_windows.cc} +0 -0
- data/src/core/lib/iomgr/{is_epollexclusive_available.c → is_epollexclusive_available.cc} +1 -1
- data/src/core/lib/iomgr/is_epollexclusive_available.h +8 -0
- data/src/core/lib/iomgr/{load_file.c → load_file.cc} +12 -12
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/{lockfree_event.c → lockfree_event.cc} +76 -68
- data/src/core/lib/iomgr/lockfree_event.h +30 -11
- data/src/core/lib/iomgr/{network_status_tracker.c → network_status_tracker.cc} +3 -2
- data/src/core/lib/iomgr/network_status_tracker.h +2 -2
- data/src/core/lib/iomgr/{polling_entity.c → polling_entity.cc} +18 -18
- data/src/core/lib/iomgr/polling_entity.h +21 -13
- data/src/core/lib/iomgr/pollset.h +17 -11
- data/src/core/lib/iomgr/pollset_set.h +23 -15
- data/src/core/lib/iomgr/{pollset_set_uv.c → pollset_set_uv.cc} +0 -0
- data/src/core/lib/iomgr/{pollset_set_windows.c → pollset_set_windows.cc} +0 -0
- data/src/core/lib/iomgr/{pollset_uv.c → pollset_uv.cc} +31 -29
- data/src/core/lib/iomgr/pollset_uv.h +8 -0
- data/src/core/lib/iomgr/{pollset_windows.c → pollset_windows.cc} +24 -24
- data/src/core/lib/iomgr/pollset_windows.h +17 -4
- data/src/core/lib/iomgr/port.h +10 -0
- data/src/core/lib/iomgr/resolve_address.h +18 -10
- data/src/core/lib/iomgr/{resolve_address_posix.c → resolve_address_posix.cc} +40 -40
- data/src/core/lib/iomgr/{resolve_address_uv.c → resolve_address_uv.cc} +61 -56
- data/src/core/lib/iomgr/{resolve_address_windows.c → resolve_address_windows.cc} +36 -34
- data/src/core/lib/iomgr/{resource_quota.c → resource_quota.cc} +209 -180
- data/src/core/lib/iomgr/resource_quota.h +45 -37
- data/src/core/lib/iomgr/{sockaddr_utils.c → sockaddr_utils.cc} +61 -61
- data/src/core/lib/iomgr/sockaddr_utils.h +23 -15
- data/src/core/lib/iomgr/sockaddr_windows.h +6 -0
- data/src/core/lib/iomgr/{socket_factory_posix.c → socket_factory_posix.cc} +20 -20
- data/src/core/lib/iomgr/socket_factory_posix.h +15 -15
- data/src/core/lib/iomgr/{socket_mutator.c → socket_mutator.cc} +18 -18
- data/src/core/lib/iomgr/socket_mutator.h +11 -11
- data/src/core/lib/iomgr/socket_utils.h +9 -1
- data/src/core/lib/iomgr/{socket_utils_common_posix.c → socket_utils_common_posix.cc} +28 -28
- data/src/core/lib/iomgr/{socket_utils_linux.c → socket_utils_linux.cc} +3 -3
- data/src/core/lib/iomgr/{socket_utils_posix.c → socket_utils_posix.cc} +3 -3
- data/src/core/lib/iomgr/socket_utils_posix.h +26 -18
- data/src/core/lib/iomgr/{socket_utils_uv.c → socket_utils_uv.cc} +1 -1
- data/src/core/lib/iomgr/{socket_utils_windows.c → socket_utils_windows.cc} +2 -2
- data/src/core/lib/iomgr/{socket_windows.c → socket_windows.cc} +18 -18
- data/src/core/lib/iomgr/socket_windows.h +26 -13
- data/src/core/lib/iomgr/tcp_client.h +14 -6
- data/src/core/lib/iomgr/{tcp_client_posix.c → tcp_client_posix.cc} +69 -70
- data/src/core/lib/iomgr/tcp_client_posix.h +11 -3
- data/src/core/lib/iomgr/{tcp_client_uv.c → tcp_client_uv.cc} +47 -48
- data/src/core/lib/iomgr/{tcp_client_windows.c → tcp_client_windows.cc} +46 -44
- data/src/core/lib/iomgr/{tcp_posix.c → tcp_posix.cc} +198 -175
- data/src/core/lib/iomgr/tcp_posix.h +15 -7
- data/src/core/lib/iomgr/tcp_server.h +31 -23
- data/src/core/lib/iomgr/{tcp_server_posix.c → tcp_server_posix.cc} +78 -77
- data/src/core/lib/iomgr/tcp_server_utils_posix.h +27 -19
- data/src/core/lib/iomgr/{tcp_server_utils_posix_common.c → tcp_server_utils_posix_common.cc} +27 -27
- data/src/core/lib/iomgr/{tcp_server_utils_posix_ifaddrs.c → tcp_server_utils_posix_ifaddrs.cc} +25 -25
- data/src/core/lib/iomgr/{tcp_server_utils_posix_noifaddrs.c → tcp_server_utils_posix_noifaddrs.cc} +2 -2
- data/src/core/lib/iomgr/{tcp_server_uv.c → tcp_server_uv.cc} +133 -105
- data/src/core/lib/iomgr/{tcp_server_windows.c → tcp_server_windows.cc} +81 -77
- data/src/core/lib/iomgr/tcp_uv.cc +420 -0
- data/src/core/lib/iomgr/tcp_uv.h +18 -4
- data/src/core/lib/iomgr/{tcp_windows.c → tcp_windows.cc} +90 -79
- data/src/core/lib/iomgr/tcp_windows.h +17 -4
- data/src/core/lib/iomgr/{time_averaged_stats.c → time_averaged_stats.cc} +0 -0
- data/src/core/lib/iomgr/time_averaged_stats.h +8 -0
- data/src/core/lib/iomgr/timer.h +16 -9
- data/src/core/lib/iomgr/{timer_generic.c → timer_generic.cc} +130 -171
- data/src/core/lib/iomgr/timer_generic.h +4 -4
- data/src/core/lib/iomgr/{timer_heap.c → timer_heap.cc} +20 -21
- data/src/core/lib/iomgr/timer_heap.h +16 -8
- data/src/core/lib/iomgr/{timer_manager.c → timer_manager.cc} +54 -52
- data/src/core/lib/iomgr/timer_manager.h +8 -0
- data/src/core/lib/iomgr/{timer_uv.c → timer_uv.cc} +22 -24
- data/src/core/lib/iomgr/timer_uv.h +2 -2
- data/src/core/lib/iomgr/{udp_server.c → udp_server.cc} +75 -75
- data/src/core/lib/iomgr/udp_server.h +25 -17
- data/src/core/lib/iomgr/{unix_sockets_posix.c → unix_sockets_posix.cc} +22 -21
- data/src/core/lib/iomgr/unix_sockets_posix.h +14 -6
- data/src/core/lib/iomgr/{unix_sockets_posix_noop.c → unix_sockets_posix_noop.cc} +5 -5
- data/src/core/lib/iomgr/{wakeup_fd_cv.c → wakeup_fd_cv.cc} +2 -2
- data/src/core/lib/iomgr/wakeup_fd_cv.h +10 -0
- data/src/core/lib/iomgr/{wakeup_fd_eventfd.c → wakeup_fd_eventfd.cc} +0 -0
- data/src/core/lib/iomgr/{wakeup_fd_nospecial.c → wakeup_fd_nospecial.cc} +0 -0
- data/src/core/lib/iomgr/{wakeup_fd_pipe.c → wakeup_fd_pipe.cc} +1 -0
- data/src/core/lib/iomgr/wakeup_fd_pipe.h +9 -1
- data/src/core/lib/iomgr/{wakeup_fd_posix.c → wakeup_fd_posix.cc} +6 -7
- data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -0
- data/src/core/lib/json/{json.c → json.cc} +0 -0
- data/src/core/lib/json/json.h +8 -0
- data/src/core/lib/json/{json_reader.c → json_reader.cc} +18 -18
- data/src/core/lib/json/json_reader.h +26 -18
- data/src/core/lib/json/{json_string.c → json_string.cc} +57 -57
- data/src/core/lib/json/{json_writer.c → json_writer.cc} +20 -20
- data/src/core/lib/json/json_writer.h +23 -15
- data/src/core/lib/profiling/{basic_timers.c → basic_timers.cc} +34 -34
- data/src/core/lib/profiling/{stap_timers.c → stap_timers.cc} +5 -5
- data/src/core/lib/profiling/timers.h +6 -6
- data/src/core/lib/security/context/{security_context.c → security_context.cc} +98 -95
- data/src/core/lib/security/context/security_context.h +27 -29
- data/src/core/lib/security/credentials/composite/{composite_credentials.c → composite_credentials.cc} +79 -73
- data/src/core/lib/security/credentials/composite/composite_credentials.h +17 -9
- data/src/core/lib/security/credentials/{credentials.c → credentials.cc} +97 -92
- data/src/core/lib/security/credentials/credentials.h +83 -75
- data/src/core/lib/security/credentials/{credentials_metadata.c → credentials_metadata.cc} +7 -6
- data/src/core/lib/security/credentials/fake/{fake_credentials.c → fake_credentials.cc} +39 -36
- data/src/core/lib/security/credentials/fake/fake_credentials.h +13 -5
- data/src/core/lib/security/credentials/google_default/{credentials_generic.c → credentials_generic.cc} +5 -5
- data/src/core/lib/security/credentials/google_default/{google_default_credentials.c → google_default_credentials.cc} +55 -55
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +9 -1
- data/src/core/lib/security/credentials/iam/{iam_credentials.c → iam_credentials.cc} +19 -18
- data/src/core/lib/security/credentials/jwt/{json_token.c → json_token.cc} +80 -75
- data/src/core/lib/security/credentials/jwt/json_token.h +23 -15
- data/src/core/lib/security/credentials/jwt/{jwt_credentials.c → jwt_credentials.cc} +45 -41
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +11 -3
- data/src/core/lib/security/credentials/jwt/{jwt_verifier.c → jwt_verifier.cc} +262 -252
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +38 -30
- data/src/core/lib/security/credentials/oauth2/{oauth2_credentials.c → oauth2_credentials.cc} +138 -141
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +30 -22
- data/src/core/lib/security/credentials/plugin/{plugin_credentials.c → plugin_credentials.cc} +52 -53
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +7 -7
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +344 -0
- data/src/core/lib/security/credentials/ssl/ssl_credentials.h +27 -0
- data/src/core/lib/security/transport/auth_filters.h +16 -0
- data/src/core/lib/security/transport/{client_auth_filter.c → client_auth_filter.cc} +127 -115
- data/src/core/lib/security/transport/{lb_targets_info.c → lb_targets_info.cc} +16 -13
- data/src/core/lib/security/transport/lb_targets_info.h +11 -3
- data/src/core/lib/security/transport/{secure_endpoint.c → secure_endpoint.cc} +84 -76
- data/src/core/lib/security/transport/secure_endpoint.h +13 -5
- data/src/core/lib/security/transport/security_connector.cc +1121 -0
- data/src/core/lib/security/transport/security_connector.h +97 -79
- data/src/core/lib/security/transport/{security_handshaker.c → security_handshaker.cc} +139 -132
- data/src/core/lib/security/transport/security_handshaker.h +11 -3
- data/src/core/lib/security/transport/{server_auth_filter.c → server_auth_filter.cc} +68 -68
- data/src/core/lib/security/transport/{tsi_error.c → tsi_error.cc} +1 -1
- data/src/core/lib/security/transport/tsi_error.h +9 -1
- data/src/core/lib/security/util/{json_util.c → json_util.cc} +11 -11
- data/src/core/lib/security/util/json_util.h +12 -4
- data/src/core/lib/slice/{b64.c → b64.cc} +15 -15
- data/src/core/lib/slice/b64.h +12 -4
- data/src/core/lib/slice/{percent_encoding.c → percent_encoding.cc} +15 -15
- data/src/core/lib/slice/percent_encoding.h +11 -3
- data/src/core/lib/slice/{slice.c → slice.cc} +64 -64
- data/src/core/lib/slice/{slice_buffer.c → slice_buffer.cc} +38 -38
- data/src/core/lib/slice/{slice_hash_table.c → slice_hash_table.cc} +7 -7
- data/src/core/lib/slice/slice_hash_table.h +19 -11
- data/src/core/lib/slice/{slice_intern.c → slice_intern.cc} +35 -34
- data/src/core/lib/slice/slice_internal.h +17 -6
- data/src/core/lib/slice/{slice_string_helpers.c → slice_string_helpers.cc} +9 -9
- data/src/core/lib/slice/slice_string_helpers.h +3 -3
- data/src/core/lib/support/abstract.h +29 -0
- data/src/core/lib/support/{alloc.c → alloc.cc} +22 -22
- data/src/core/lib/support/{arena.c → arena.cc} +12 -12
- data/src/core/lib/support/arena.h +11 -3
- data/src/core/lib/support/{atm.c → atm.cc} +1 -1
- data/src/core/lib/support/{avl.c → avl.cc} +71 -70
- data/src/core/lib/support/{cmdline.c → cmdline.cc} +62 -62
- data/src/core/lib/support/{cpu_iphone.c → cpu_iphone.cc} +2 -0
- data/src/core/lib/support/{cpu_linux.c → cpu_linux.cc} +10 -0
- data/src/core/lib/support/{cpu_posix.c → cpu_posix.cc} +27 -4
- data/src/core/lib/support/{cpu_windows.c → cpu_windows.cc} +1 -0
- data/src/core/lib/support/env.h +3 -3
- data/src/core/lib/support/{env_linux.c → env_linux.cc} +11 -11
- data/src/core/lib/support/{env_posix.c → env_posix.cc} +4 -4
- data/src/core/lib/support/{env_windows.c → env_windows.cc} +5 -5
- data/src/core/lib/support/{fork.c → fork.cc} +2 -2
- data/src/core/lib/support/{histogram.c → histogram.cc} +25 -26
- data/src/core/lib/support/{host_port.c → host_port.cc} +16 -16
- data/src/core/lib/support/{log.c → log.cc} +8 -8
- data/src/core/lib/support/{log_android.c → log_android.cc} +7 -7
- data/src/core/lib/support/{log_linux.c → log_linux.cc} +8 -8
- data/src/core/lib/support/{log_posix.c → log_posix.cc} +9 -10
- data/src/core/lib/support/{log_windows.c → log_windows.cc} +7 -7
- data/src/core/lib/support/manual_constructor.h +211 -0
- data/src/core/lib/support/memory.h +41 -0
- data/src/core/lib/support/mpscq.cc +114 -0
- data/src/core/lib/support/mpscq.h +45 -7
- data/src/core/lib/support/{murmur_hash.c → murmur_hash.cc} +9 -12
- data/src/core/lib/support/murmur_hash.h +9 -1
- data/src/core/lib/support/spinlock.h +8 -1
- data/src/core/lib/support/{string.c → string.cc} +56 -55
- data/src/core/lib/support/string.h +21 -21
- data/src/core/lib/support/{string_posix.c → string_posix.cc} +5 -4
- data/src/core/lib/support/{string_util_windows.c → string_util_windows.cc} +9 -6
- data/src/core/lib/support/{string_windows.c → string_windows.cc} +3 -2
- data/src/core/lib/support/string_windows.h +8 -0
- data/src/core/lib/support/{subprocess_posix.c → subprocess_posix.cc} +13 -13
- data/src/core/lib/support/{subprocess_windows.c → subprocess_windows.cc} +9 -9
- data/src/core/lib/support/{sync.c → sync.cc} +22 -22
- data/src/core/lib/support/{sync_posix.c → sync_posix.cc} +6 -2
- data/src/core/lib/support/{sync_windows.c → sync_windows.cc} +14 -14
- data/src/core/lib/support/{thd.c → thd.cc} +0 -0
- data/src/core/lib/support/{thd_posix.c → thd_posix.cc} +10 -10
- data/src/core/lib/support/{thd_windows.c → thd_windows.cc} +10 -10
- data/src/core/lib/support/{time.c → time.cc} +0 -0
- data/src/core/lib/support/{time_posix.c → time_posix.cc} +5 -6
- data/src/core/lib/support/{time_precise.c → time_precise.cc} +6 -4
- data/src/core/lib/support/time_precise.h +9 -1
- data/src/core/lib/support/{time_windows.c → time_windows.cc} +2 -3
- data/src/core/lib/support/{tls_pthread.c → tls_pthread.cc} +2 -2
- data/src/core/lib/support/tmpfile.h +1 -1
- data/src/core/lib/support/{tmpfile_msys.c → tmpfile_msys.cc} +2 -2
- data/src/core/lib/support/{tmpfile_posix.c → tmpfile_posix.cc} +7 -7
- data/src/core/lib/support/{tmpfile_windows.c → tmpfile_windows.cc} +2 -2
- data/src/core/lib/support/{wrap_memcpy.c → wrap_memcpy.cc} +4 -2
- data/src/core/lib/surface/{alarm.c → alarm.cc} +32 -31
- data/src/core/lib/surface/alarm_internal.h +10 -2
- data/src/core/lib/surface/{api_trace.c → api_trace.cc} +1 -1
- data/src/core/lib/surface/api_trace.h +2 -2
- data/src/core/lib/surface/{byte_buffer.c → byte_buffer.cc} +13 -13
- data/src/core/lib/surface/{byte_buffer_reader.c → byte_buffer_reader.cc} +9 -9
- data/src/core/lib/surface/{call.c → call.cc} +379 -372
- data/src/core/lib/surface/call.h +37 -38
- data/src/core/lib/surface/{call_details.c → call_details.cc} +0 -0
- data/src/core/lib/surface/{call_log_batch.c → call_log_batch.cc} +13 -11
- data/src/core/lib/surface/call_test_only.h +5 -5
- data/src/core/lib/surface/{channel.c → channel.cc} +94 -95
- data/src/core/lib/surface/channel.h +29 -21
- data/src/core/lib/surface/{channel_init.c → channel_init.cc} +13 -13
- data/src/core/lib/surface/channel_init.h +6 -6
- data/src/core/lib/surface/{channel_ping.c → channel_ping.cc} +12 -12
- data/src/core/lib/surface/{channel_stack_type.c → channel_stack_type.cc} +1 -1
- data/src/core/lib/surface/channel_stack_type.h +9 -1
- data/src/core/lib/surface/{completion_queue.c → completion_queue.cc} +416 -379
- data/src/core/lib/surface/completion_queue.h +29 -29
- data/src/core/lib/surface/{completion_queue_factory.c → completion_queue_factory.cc} +1 -1
- data/src/core/lib/surface/completion_queue_factory.h +8 -0
- data/src/core/lib/surface/{event_string.c → event_string.cc} +9 -9
- data/src/core/lib/surface/event_string.h +9 -1
- data/src/core/lib/surface/{init.c → init.cc} +16 -39
- data/src/core/lib/surface/init.h +8 -0
- data/src/core/lib/surface/{init_secure.c → init_secure.cc} +12 -25
- data/src/core/lib/surface/lame_client.cc +38 -40
- data/src/core/lib/surface/lame_client.h +8 -0
- data/src/core/lib/surface/{metadata_array.c → metadata_array.cc} +0 -0
- data/src/core/lib/surface/{server.c → server.cc} +340 -404
- data/src/core/lib/surface/server.h +22 -14
- data/src/core/lib/surface/{validate_metadata.c → validate_metadata.cc} +10 -9
- data/src/core/lib/surface/validate_metadata.h +10 -2
- data/src/core/lib/surface/{version.c → version.cc} +2 -2
- data/src/core/lib/transport/bdp_estimator.cc +84 -0
- data/src/core/lib/transport/bdp_estimator.h +67 -42
- data/src/core/lib/transport/{byte_stream.c → byte_stream.cc} +51 -51
- data/src/core/lib/transport/byte_stream.h +41 -33
- data/src/core/lib/transport/{connectivity_state.c → connectivity_state.cc} +36 -40
- data/src/core/lib/transport/connectivity_state.h +29 -21
- data/src/core/lib/transport/{error_utils.c → error_utils.cc} +26 -22
- data/src/core/lib/transport/error_utils.h +18 -6
- data/src/core/lib/transport/{metadata.c → metadata.cc} +92 -88
- data/src/core/lib/transport/metadata.h +22 -20
- data/src/core/lib/transport/{metadata_batch.c → metadata_batch.cc} +78 -79
- data/src/core/lib/transport/metadata_batch.h +46 -45
- data/src/core/lib/transport/pid_controller.cc +48 -0
- data/src/core/lib/transport/pid_controller.h +84 -32
- data/src/core/lib/transport/{service_config.c → service_config.cc} +66 -48
- data/src/core/lib/transport/service_config.h +11 -2
- data/src/core/lib/transport/{static_metadata.c → static_metadata.cc} +2 -2
- data/src/core/lib/transport/static_metadata.h +30 -23
- data/src/core/lib/transport/{status_conversion.c → status_conversion.cc} +4 -3
- data/src/core/lib/transport/status_conversion.h +12 -2
- data/src/core/lib/transport/{timeout_encoding.c → timeout_encoding.cc} +28 -61
- data/src/core/lib/transport/timeout_encoding.h +11 -2
- data/src/core/lib/transport/{transport.c → transport.cc} +79 -79
- data/src/core/lib/transport/transport.h +78 -80
- data/src/core/lib/transport/transport_impl.h +27 -19
- data/src/core/lib/transport/{transport_op_string.c → transport_op_string.cc} +32 -30
- data/src/core/plugin_registry/{grpc_plugin_registry.c → grpc_plugin_registry.cc} +34 -38
- data/src/core/tsi/{fake_transport_security.c → fake_transport_security.cc} +141 -132
- data/src/core/tsi/fake_transport_security.h +5 -5
- data/src/core/tsi/{gts_transport_security.c → gts_transport_security.cc} +4 -4
- data/src/core/tsi/gts_transport_security.h +11 -3
- data/src/core/tsi/{ssl_transport_security.c → ssl_transport_security.cc} +309 -300
- data/src/core/tsi/ssl_transport_security.h +25 -25
- data/src/core/tsi/ssl_types.h +8 -0
- data/src/core/tsi/{transport_security.c → transport_security.cc} +94 -87
- data/src/core/tsi/transport_security.h +55 -55
- data/src/core/tsi/{transport_security_adapter.c → transport_security_adapter.cc} +58 -55
- data/src/core/tsi/transport_security_adapter.h +2 -2
- data/src/core/tsi/{transport_security_grpc.c → transport_security_grpc.cc} +21 -21
- data/src/core/tsi/transport_security_grpc.h +19 -19
- data/src/core/tsi/transport_security_interface.h +41 -41
- data/src/ruby/ext/grpc/extconf.rb +4 -2
- data/src/ruby/ext/grpc/rb_byte_buffer.c +5 -5
- data/src/ruby/ext/grpc/rb_byte_buffer.h +2 -2
- data/src/ruby/ext/grpc/rb_call.c +41 -42
- data/src/ruby/ext/grpc/rb_call.h +6 -6
- data/src/ruby/ext/grpc/rb_call_credentials.c +30 -30
- data/src/ruby/ext/grpc/rb_channel.c +87 -87
- data/src/ruby/ext/grpc/rb_channel_credentials.c +23 -23
- data/src/ruby/ext/grpc/rb_completion_queue.c +11 -11
- data/src/ruby/ext/grpc/rb_completion_queue.h +3 -3
- data/src/ruby/ext/grpc/rb_compression_options.c +20 -20
- data/src/ruby/ext/grpc/rb_event_thread.c +14 -14
- data/src/ruby/ext/grpc/rb_event_thread.h +1 -1
- data/src/ruby/ext/grpc/rb_grpc.c +8 -8
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +16 -58
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +242 -306
- data/src/ruby/ext/grpc/rb_server.c +23 -23
- data/src/ruby/ext/grpc/rb_server_credentials.c +13 -13
- data/src/ruby/lib/grpc/generic/rpc_server.rb +25 -12
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/checker.rb +14 -0
- data/src/ruby/spec/pb/health/checker_spec.rb +29 -0
- data/third_party/cares/config_freebsd/ares_config.h +502 -0
- data/third_party/cares/config_openbsd/ares_config.h +502 -0
- metadata +302 -328
- data/src/core/ext/census/aggregation.h +0 -51
- data/src/core/ext/census/base_resources.c +0 -56
- data/src/core/ext/census/base_resources.h +0 -24
- data/src/core/ext/census/census_interface.h +0 -61
- data/src/core/ext/census/census_rpc_stats.h +0 -86
- data/src/core/ext/census/context.c +0 -496
- data/src/core/ext/census/gen/census.pb.c +0 -161
- data/src/core/ext/census/gen/census.pb.h +0 -280
- data/src/core/ext/census/gen/trace_context.pb.c +0 -39
- data/src/core/ext/census/gen/trace_context.pb.h +0 -78
- data/src/core/ext/census/grpc_filter.c +0 -196
- data/src/core/ext/census/grpc_plugin.c +0 -70
- data/src/core/ext/census/initialize.c +0 -51
- data/src/core/ext/census/intrusive_hash_map.c +0 -305
- data/src/core/ext/census/intrusive_hash_map.h +0 -152
- data/src/core/ext/census/intrusive_hash_map_internal.h +0 -48
- data/src/core/ext/census/mlog.c +0 -586
- data/src/core/ext/census/mlog.h +0 -80
- data/src/core/ext/census/operation.c +0 -48
- data/src/core/ext/census/placeholders.c +0 -49
- data/src/core/ext/census/resource.c +0 -303
- data/src/core/ext/census/resource.h +0 -48
- data/src/core/ext/census/rpc_metric_id.h +0 -36
- data/src/core/ext/census/trace_context.c +0 -71
- data/src/core/ext/census/trace_context.h +0 -56
- data/src/core/ext/census/trace_label.h +0 -46
- data/src/core/ext/census/trace_propagation.h +0 -48
- data/src/core/ext/census/trace_status.h +0 -30
- data/src/core/ext/census/trace_string.h +0 -35
- data/src/core/ext/census/tracing.c +0 -55
- data/src/core/ext/census/tracing.h +0 -109
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.c +0 -714
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.c +0 -924
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.c +0 -60
- data/src/core/ext/transport/chttp2/transport/flow_control.c +0 -502
- data/src/core/ext/transport/chttp2/transport/writing.c +0 -534
- data/src/core/lib/debug/trace.c +0 -146
- data/src/core/lib/iomgr/closure.c +0 -219
- data/src/core/lib/iomgr/ev_epollex_linux.c +0 -1461
- data/src/core/lib/iomgr/ev_posix.c +0 -266
- data/src/core/lib/iomgr/exec_ctx.c +0 -113
- data/src/core/lib/iomgr/tcp_uv.c +0 -381
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +0 -194
- data/src/core/lib/security/transport/security_connector.c +0 -914
- data/src/core/lib/support/backoff.c +0 -72
- data/src/core/lib/support/backoff.h +0 -56
- data/src/core/lib/support/mpscq.c +0 -79
- data/src/core/lib/support/stack_lockfree.c +0 -137
- data/src/core/lib/support/stack_lockfree.h +0 -38
- data/src/core/lib/transport/bdp_estimator.c +0 -110
- data/src/core/lib/transport/pid_controller.c +0 -63
@@ -1,51 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#include <stddef.h>
|
20
|
-
|
21
|
-
#ifndef GRPC_CORE_EXT_CENSUS_AGGREGATION_H
|
22
|
-
#define GRPC_CORE_EXT_CENSUS_AGGREGATION_H
|
23
|
-
|
24
|
-
/** Structure used to describe an aggregation type. */
|
25
|
-
struct census_aggregation_ops {
|
26
|
-
/* Create a new aggregation. The pointer returned can be used in future calls
|
27
|
-
to clone(), free(), record(), data() and reset(). */
|
28
|
-
void *(*create)(const void *create_arg);
|
29
|
-
/* Make a copy of an aggregation created by create() */
|
30
|
-
void *(*clone)(const void *aggregation);
|
31
|
-
/* Destroy an aggregation created by create() */
|
32
|
-
void (*free)(void *aggregation);
|
33
|
-
/* Record a new value against aggregation. */
|
34
|
-
void (*record)(void *aggregation, double value);
|
35
|
-
/* Return current aggregation data. The caller must cast this object into
|
36
|
-
the correct type for the aggregation result. The object returned can be
|
37
|
-
freed by using free_data(). */
|
38
|
-
void *(*data)(const void *aggregation);
|
39
|
-
/* free data returned by data() */
|
40
|
-
void (*free_data)(void *data);
|
41
|
-
/* Reset an aggregation to default (zero) values. */
|
42
|
-
void (*reset)(void *aggregation);
|
43
|
-
/* Merge 'from' aggregation into 'to'. Both aggregations must be compatible */
|
44
|
-
void (*merge)(void *to, const void *from);
|
45
|
-
/* Fill buffer with printable string version of aggregation contents. For
|
46
|
-
debugging only. Returns the number of bytes added to buffer (a value == n
|
47
|
-
implies the buffer was of insufficient size). */
|
48
|
-
size_t (*print)(const void *aggregation, char *buffer, size_t n);
|
49
|
-
};
|
50
|
-
|
51
|
-
#endif /* GRPC_CORE_EXT_CENSUS_AGGREGATION_H */
|
@@ -1,56 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright 2016 gRPC authors.
|
3
|
-
*
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
* you may not use this file except in compliance with the License.
|
6
|
-
* You may obtain a copy of the License at
|
7
|
-
*
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
*
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
* See the License for the specific language governing permissions and
|
14
|
-
* limitations under the License.
|
15
|
-
*
|
16
|
-
*/
|
17
|
-
|
18
|
-
#include "src/core/ext/census/base_resources.h"
|
19
|
-
|
20
|
-
#include <stdio.h>
|
21
|
-
#include <string.h>
|
22
|
-
|
23
|
-
#include <grpc/census.h>
|
24
|
-
#include <grpc/support/log.h>
|
25
|
-
|
26
|
-
#include "src/core/ext/census/resource.h"
|
27
|
-
|
28
|
-
// Add base RPC resource definitions for use by RPC runtime.
|
29
|
-
//
|
30
|
-
// TODO(aveitch): All of these are currently hardwired definitions encoded in
|
31
|
-
// the code in this file. These should be converted to use an external
|
32
|
-
// configuration mechanism, in which these resources are defined in a text
|
33
|
-
// file, which is compiled to .pb format and read by still-to-be-written
|
34
|
-
// configuration functions.
|
35
|
-
|
36
|
-
// Define all base resources. This should be called by census initialization.
|
37
|
-
void define_base_resources() {
|
38
|
-
google_census_Resource_BasicUnit numerator =
|
39
|
-
google_census_Resource_BasicUnit_SECS;
|
40
|
-
resource r = {(char *)"client_rpc_latency", // name
|
41
|
-
(char *)"Client RPC latency in seconds", // description
|
42
|
-
0, // prefix
|
43
|
-
1, // n_numerators
|
44
|
-
&numerator, // numerators
|
45
|
-
0, // n_denominators
|
46
|
-
NULL}; // denominators
|
47
|
-
define_resource(&r);
|
48
|
-
r = (resource){(char *)"server_rpc_latency", // name
|
49
|
-
(char *)"Server RPC latency in seconds", // description
|
50
|
-
0, // prefix
|
51
|
-
1, // n_numerators
|
52
|
-
&numerator, // numerators
|
53
|
-
0, // n_denominators
|
54
|
-
NULL}; // denominators
|
55
|
-
define_resource(&r);
|
56
|
-
}
|
@@ -1,24 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
* Copyright 2016 gRPC authors.
|
3
|
-
*
|
4
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
* you may not use this file except in compliance with the License.
|
6
|
-
* You may obtain a copy of the License at
|
7
|
-
*
|
8
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
*
|
10
|
-
* Unless required by applicable law or agreed to in writing, software
|
11
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
* See the License for the specific language governing permissions and
|
14
|
-
* limitations under the License.
|
15
|
-
*
|
16
|
-
*/
|
17
|
-
|
18
|
-
#ifndef GRPC_CORE_EXT_CENSUS_BASE_RESOURCES_H
|
19
|
-
#define GRPC_CORE_EXT_CENSUS_BASE_RESOURCES_H
|
20
|
-
|
21
|
-
/* Define all base resources. This should be called by census initialization. */
|
22
|
-
void define_base_resources();
|
23
|
-
|
24
|
-
#endif /* GRPC_CORE_EXT_CENSUS_BASE_RESOURCES_H */
|
@@ -1,61 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#ifndef GRPC_CORE_EXT_CENSUS_CENSUS_INTERFACE_H
|
20
|
-
#define GRPC_CORE_EXT_CENSUS_CENSUS_INTERFACE_H
|
21
|
-
|
22
|
-
#include <grpc/support/port_platform.h>
|
23
|
-
|
24
|
-
/* Maximum length of an individual census trace annotation. */
|
25
|
-
#define CENSUS_MAX_ANNOTATION_LENGTH 200
|
26
|
-
|
27
|
-
/* Structure of a census op id. Define as structure because 64bit integer is not
|
28
|
-
available on every platform for C89. */
|
29
|
-
typedef struct census_op_id {
|
30
|
-
uint32_t upper;
|
31
|
-
uint32_t lower;
|
32
|
-
} census_op_id;
|
33
|
-
|
34
|
-
typedef struct census_rpc_stats census_rpc_stats;
|
35
|
-
|
36
|
-
/* Initializes Census library. No-op if Census is already initialized. */
|
37
|
-
void census_init(void);
|
38
|
-
|
39
|
-
/* Shutdown Census Library. */
|
40
|
-
void census_shutdown(void);
|
41
|
-
|
42
|
-
/* Annotates grpc method name on a census_op_id. The method name has the format
|
43
|
-
of <full quantified rpc service name>/<rpc function name>. Returns 0 iff
|
44
|
-
op_id and method_name are all valid. op_id is valid after its creation and
|
45
|
-
before calling census_tracing_end_op().
|
46
|
-
|
47
|
-
TODO(hongyu): Figure out valid characters set for service name and command
|
48
|
-
name and document requirements here.*/
|
49
|
-
int census_add_method_tag(census_op_id op_id, const char *method_name);
|
50
|
-
|
51
|
-
/* Annotates tracing information to a specific op_id.
|
52
|
-
Up to CENSUS_MAX_ANNOTATION_LENGTH bytes are recorded. */
|
53
|
-
void census_tracing_print(census_op_id op_id, const char *annotation);
|
54
|
-
|
55
|
-
/* Starts tracing for an RPC. Returns a locally unique census_op_id */
|
56
|
-
census_op_id census_tracing_start_op(void);
|
57
|
-
|
58
|
-
/* Ends tracing. Calling this function will invalidate the input op_id. */
|
59
|
-
void census_tracing_end_op(census_op_id op_id);
|
60
|
-
|
61
|
-
#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_INTERFACE_H */
|
@@ -1,86 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#ifndef GRPC_CORE_EXT_CENSUS_CENSUS_RPC_STATS_H
|
20
|
-
#define GRPC_CORE_EXT_CENSUS_CENSUS_RPC_STATS_H
|
21
|
-
|
22
|
-
#include <grpc/support/port_platform.h>
|
23
|
-
#include "src/core/ext/census/census_interface.h"
|
24
|
-
|
25
|
-
#ifdef __cplusplus
|
26
|
-
extern "C" {
|
27
|
-
#endif
|
28
|
-
|
29
|
-
struct census_rpc_stats {
|
30
|
-
uint64_t cnt;
|
31
|
-
uint64_t rpc_error_cnt;
|
32
|
-
uint64_t app_error_cnt;
|
33
|
-
double elapsed_time_ms;
|
34
|
-
double api_request_bytes;
|
35
|
-
double wire_request_bytes;
|
36
|
-
double api_response_bytes;
|
37
|
-
double wire_response_bytes;
|
38
|
-
};
|
39
|
-
|
40
|
-
/* Creates an empty rpc stats object on heap. */
|
41
|
-
census_rpc_stats *census_rpc_stats_create_empty(void);
|
42
|
-
|
43
|
-
typedef struct census_per_method_rpc_stats {
|
44
|
-
const char *method;
|
45
|
-
census_rpc_stats minute_stats; /* cumulative stats in the past minute */
|
46
|
-
census_rpc_stats hour_stats; /* cumulative stats in the past hour */
|
47
|
-
census_rpc_stats total_stats; /* cumulative stats from last gc */
|
48
|
-
} census_per_method_rpc_stats;
|
49
|
-
|
50
|
-
typedef struct census_aggregated_rpc_stats {
|
51
|
-
int num_entries;
|
52
|
-
census_per_method_rpc_stats *stats;
|
53
|
-
} census_aggregated_rpc_stats;
|
54
|
-
|
55
|
-
/* Initializes an aggregated rpc stats object to an empty state. */
|
56
|
-
void census_aggregated_rpc_stats_set_empty(census_aggregated_rpc_stats *data);
|
57
|
-
|
58
|
-
/* Records client side stats of a rpc. */
|
59
|
-
void census_record_rpc_client_stats(census_op_id op_id,
|
60
|
-
const census_rpc_stats *stats);
|
61
|
-
|
62
|
-
/* Records server side stats of a rpc. */
|
63
|
-
void census_record_rpc_server_stats(census_op_id op_id,
|
64
|
-
const census_rpc_stats *stats);
|
65
|
-
|
66
|
-
/* The following two functions are intended for inprocess query of
|
67
|
-
per-service per-method stats from grpc implementations. */
|
68
|
-
|
69
|
-
/* Populates *data_map with server side aggregated per-service per-method
|
70
|
-
stats.
|
71
|
-
DO NOT CALL from outside of grpc code. */
|
72
|
-
void census_get_server_stats(census_aggregated_rpc_stats *data_map);
|
73
|
-
|
74
|
-
/* Populates *data_map with client side aggregated per-service per-method
|
75
|
-
stats.
|
76
|
-
DO NOT CALL from outside of grpc code. */
|
77
|
-
void census_get_client_stats(census_aggregated_rpc_stats *data_map);
|
78
|
-
|
79
|
-
void census_stats_store_init(void);
|
80
|
-
void census_stats_store_shutdown(void);
|
81
|
-
|
82
|
-
#ifdef __cplusplus
|
83
|
-
}
|
84
|
-
#endif
|
85
|
-
|
86
|
-
#endif /* GRPC_CORE_EXT_CENSUS_CENSUS_RPC_STATS_H */
|
@@ -1,496 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#include <grpc/census.h>
|
20
|
-
#include <grpc/support/alloc.h>
|
21
|
-
#include <grpc/support/log.h>
|
22
|
-
#include <grpc/support/port_platform.h>
|
23
|
-
#include <grpc/support/useful.h>
|
24
|
-
#include <stdbool.h>
|
25
|
-
#include <string.h>
|
26
|
-
#include "src/core/lib/support/string.h"
|
27
|
-
|
28
|
-
// Functions in this file support the public context API, including
|
29
|
-
// encoding/decoding as part of context propagation across RPC's. The overall
|
30
|
-
// requirements (in approximate priority order) for the
|
31
|
-
// context representation:
|
32
|
-
// 1. Efficient conversion to/from wire format
|
33
|
-
// 2. Minimal bytes used on-wire
|
34
|
-
// 3. Efficient context creation
|
35
|
-
// 4. Efficient lookup of tag value for a key
|
36
|
-
// 5. Efficient iteration over tags
|
37
|
-
// 6. Minimal memory footprint
|
38
|
-
//
|
39
|
-
// Notes on tradeoffs/decisions:
|
40
|
-
// * tag includes 1 byte length of key, as well as nil-terminating byte. These
|
41
|
-
// are to aid in efficient parsing and the ability to directly return key
|
42
|
-
// strings. This is more important than saving a single byte/tag on the wire.
|
43
|
-
// * The wire encoding uses only single byte values. This eliminates the need
|
44
|
-
// to handle endian-ness conversions. It also means there is a hard upper
|
45
|
-
// limit of 255 for both CENSUS_MAX_TAG_KV_LEN and CENSUS_MAX_PROPAGATED_TAGS.
|
46
|
-
// * Keep all tag information (keys/values/flags) in a single memory buffer,
|
47
|
-
// that can be directly copied to the wire.
|
48
|
-
|
49
|
-
// min and max valid chars in tag keys and values. All printable ASCII is OK.
|
50
|
-
#define MIN_VALID_TAG_CHAR 32 // ' '
|
51
|
-
#define MAX_VALID_TAG_CHAR 126 // '~'
|
52
|
-
|
53
|
-
// Structure representing a set of tags. Essentially a count of number of tags
|
54
|
-
// present, and pointer to a chunk of memory that contains the per-tag details.
|
55
|
-
struct tag_set {
|
56
|
-
int ntags; // number of tags.
|
57
|
-
int ntags_alloc; // ntags + number of deleted tags (total number of tags
|
58
|
-
// in all of kvm). This will always be == ntags, except during the process
|
59
|
-
// of building a new tag set.
|
60
|
-
size_t kvm_size; // number of bytes allocated for key/value storage.
|
61
|
-
size_t kvm_used; // number of bytes of used key/value memory
|
62
|
-
char *kvm; // key/value memory. Consists of repeated entries of:
|
63
|
-
// Offset Size Description
|
64
|
-
// 0 1 Key length, including trailing 0. (K)
|
65
|
-
// 1 1 Value length, including trailing 0 (V)
|
66
|
-
// 2 1 Flags
|
67
|
-
// 3 K Key bytes
|
68
|
-
// 3 + K V Value bytes
|
69
|
-
//
|
70
|
-
// We refer to the first 3 entries as the 'tag header'. If extra values are
|
71
|
-
// introduced in the header, you will need to modify the TAG_HEADER_SIZE
|
72
|
-
// constant, the raw_tag structure (and everything that uses it) and the
|
73
|
-
// encode/decode functions appropriately.
|
74
|
-
};
|
75
|
-
|
76
|
-
// Number of bytes in tag header.
|
77
|
-
#define TAG_HEADER_SIZE 3 // key length (1) + value length (1) + flags (1)
|
78
|
-
// Offsets to tag header entries.
|
79
|
-
#define KEY_LEN_OFFSET 0
|
80
|
-
#define VALUE_LEN_OFFSET 1
|
81
|
-
#define FLAG_OFFSET 2
|
82
|
-
|
83
|
-
// raw_tag represents the raw-storage form of a tag in the kvm of a tag_set.
|
84
|
-
struct raw_tag {
|
85
|
-
uint8_t key_len;
|
86
|
-
uint8_t value_len;
|
87
|
-
uint8_t flags;
|
88
|
-
char *key;
|
89
|
-
char *value;
|
90
|
-
};
|
91
|
-
|
92
|
-
// Use a reserved flag bit for indication of deleted tag.
|
93
|
-
#define CENSUS_TAG_DELETED CENSUS_TAG_RESERVED
|
94
|
-
#define CENSUS_TAG_IS_DELETED(flags) (flags & CENSUS_TAG_DELETED)
|
95
|
-
|
96
|
-
// Primary representation of a context. Composed of 2 underlying tag_set
|
97
|
-
// structs, one each for propagated and local (non-propagated) tags. This is
|
98
|
-
// to efficiently support tag encoding/decoding.
|
99
|
-
// TODO(aveitch): need to add tracing id's/structure.
|
100
|
-
struct census_context {
|
101
|
-
struct tag_set tags[2];
|
102
|
-
census_context_status status;
|
103
|
-
};
|
104
|
-
|
105
|
-
// Indices into the tags member of census_context
|
106
|
-
#define PROPAGATED_TAGS 0
|
107
|
-
#define LOCAL_TAGS 1
|
108
|
-
|
109
|
-
// Validate (check all characters are in range and size is less than limit) a
|
110
|
-
// key or value string. Returns 0 if the string is invalid, or the length
|
111
|
-
// (including terminator) if valid.
|
112
|
-
static size_t validate_tag(const char *kv) {
|
113
|
-
size_t len = 1;
|
114
|
-
char ch;
|
115
|
-
while ((ch = *kv++) != 0) {
|
116
|
-
if (ch < MIN_VALID_TAG_CHAR || ch > MAX_VALID_TAG_CHAR) {
|
117
|
-
return 0;
|
118
|
-
}
|
119
|
-
len++;
|
120
|
-
}
|
121
|
-
if (len > CENSUS_MAX_TAG_KV_LEN) {
|
122
|
-
return 0;
|
123
|
-
}
|
124
|
-
return len;
|
125
|
-
}
|
126
|
-
|
127
|
-
// Extract a raw tag given a pointer (raw) to the tag header. Allow for some
|
128
|
-
// extra bytes in the tag header (see encode/decode functions for usage: this
|
129
|
-
// allows for future expansion of the tag header).
|
130
|
-
static char *decode_tag(struct raw_tag *tag, char *header, int offset) {
|
131
|
-
tag->key_len = (uint8_t)(*header++);
|
132
|
-
tag->value_len = (uint8_t)(*header++);
|
133
|
-
tag->flags = (uint8_t)(*header++);
|
134
|
-
header += offset;
|
135
|
-
tag->key = header;
|
136
|
-
header += tag->key_len;
|
137
|
-
tag->value = header;
|
138
|
-
return header + tag->value_len;
|
139
|
-
}
|
140
|
-
|
141
|
-
// Make a copy (in 'to') of an existing tag_set.
|
142
|
-
static void tag_set_copy(struct tag_set *to, const struct tag_set *from) {
|
143
|
-
memcpy(to, from, sizeof(struct tag_set));
|
144
|
-
to->kvm = (char *)gpr_malloc(to->kvm_size);
|
145
|
-
memcpy(to->kvm, from->kvm, from->kvm_used);
|
146
|
-
}
|
147
|
-
|
148
|
-
// Delete a tag from a tag_set, if it exists (returns true if it did).
|
149
|
-
static bool tag_set_delete_tag(struct tag_set *tags, const char *key,
|
150
|
-
size_t key_len) {
|
151
|
-
char *kvp = tags->kvm;
|
152
|
-
for (int i = 0; i < tags->ntags_alloc; i++) {
|
153
|
-
uint8_t *flags = (uint8_t *)(kvp + FLAG_OFFSET);
|
154
|
-
struct raw_tag tag;
|
155
|
-
kvp = decode_tag(&tag, kvp, 0);
|
156
|
-
if (CENSUS_TAG_IS_DELETED(tag.flags)) continue;
|
157
|
-
if ((key_len == tag.key_len) && (memcmp(key, tag.key, key_len) == 0)) {
|
158
|
-
*flags |= CENSUS_TAG_DELETED;
|
159
|
-
tags->ntags--;
|
160
|
-
return true;
|
161
|
-
}
|
162
|
-
}
|
163
|
-
return false;
|
164
|
-
}
|
165
|
-
|
166
|
-
// Delete a tag from a context, return true if it existed.
|
167
|
-
static bool context_delete_tag(census_context *context, const census_tag *tag,
|
168
|
-
size_t key_len) {
|
169
|
-
return (
|
170
|
-
tag_set_delete_tag(&context->tags[LOCAL_TAGS], tag->key, key_len) ||
|
171
|
-
tag_set_delete_tag(&context->tags[PROPAGATED_TAGS], tag->key, key_len));
|
172
|
-
}
|
173
|
-
|
174
|
-
// Add a tag to a tag_set. Return true on success, false if the tag could
|
175
|
-
// not be added because of constraints on tag set size. This function should
|
176
|
-
// not be called if the tag may already exist (in a non-deleted state) in
|
177
|
-
// the tag_set, as that would result in two tags with the same key.
|
178
|
-
static bool tag_set_add_tag(struct tag_set *tags, const census_tag *tag,
|
179
|
-
size_t key_len, size_t value_len) {
|
180
|
-
if (tags->ntags == CENSUS_MAX_PROPAGATED_TAGS) {
|
181
|
-
return false;
|
182
|
-
}
|
183
|
-
const size_t tag_size = key_len + value_len + TAG_HEADER_SIZE;
|
184
|
-
if (tags->kvm_used + tag_size > tags->kvm_size) {
|
185
|
-
// allocate new memory if needed
|
186
|
-
tags->kvm_size += 2 * CENSUS_MAX_TAG_KV_LEN + TAG_HEADER_SIZE;
|
187
|
-
char *new_kvm = (char *)gpr_malloc(tags->kvm_size);
|
188
|
-
if (tags->kvm_used > 0) memcpy(new_kvm, tags->kvm, tags->kvm_used);
|
189
|
-
gpr_free(tags->kvm);
|
190
|
-
tags->kvm = new_kvm;
|
191
|
-
}
|
192
|
-
char *kvp = tags->kvm + tags->kvm_used;
|
193
|
-
*kvp++ = (char)key_len;
|
194
|
-
*kvp++ = (char)value_len;
|
195
|
-
// ensure reserved flags are not used.
|
196
|
-
*kvp++ = (char)(tag->flags & (CENSUS_TAG_PROPAGATE | CENSUS_TAG_STATS));
|
197
|
-
memcpy(kvp, tag->key, key_len);
|
198
|
-
kvp += key_len;
|
199
|
-
memcpy(kvp, tag->value, value_len);
|
200
|
-
tags->kvm_used += tag_size;
|
201
|
-
tags->ntags++;
|
202
|
-
tags->ntags_alloc++;
|
203
|
-
return true;
|
204
|
-
}
|
205
|
-
|
206
|
-
// Add/modify/delete a tag to/in a context. Caller must validate that tag key
|
207
|
-
// etc. are valid.
|
208
|
-
static void context_modify_tag(census_context *context, const census_tag *tag,
|
209
|
-
size_t key_len, size_t value_len) {
|
210
|
-
// First delete the tag if it is already present.
|
211
|
-
bool deleted = context_delete_tag(context, tag, key_len);
|
212
|
-
bool added = false;
|
213
|
-
if (CENSUS_TAG_IS_PROPAGATED(tag->flags)) {
|
214
|
-
added = tag_set_add_tag(&context->tags[PROPAGATED_TAGS], tag, key_len,
|
215
|
-
value_len);
|
216
|
-
} else {
|
217
|
-
added =
|
218
|
-
tag_set_add_tag(&context->tags[LOCAL_TAGS], tag, key_len, value_len);
|
219
|
-
}
|
220
|
-
|
221
|
-
if (deleted) {
|
222
|
-
context->status.n_modified_tags++;
|
223
|
-
} else {
|
224
|
-
if (added) {
|
225
|
-
context->status.n_added_tags++;
|
226
|
-
} else {
|
227
|
-
context->status.n_ignored_tags++;
|
228
|
-
}
|
229
|
-
}
|
230
|
-
}
|
231
|
-
|
232
|
-
// Remove memory used for deleted tags from a tag set. Basic algorithm:
|
233
|
-
// 1) Walk through tag set to find first deleted tag. Record where it is.
|
234
|
-
// 2) Find the next not-deleted tag. Copy all of kvm from there to the end
|
235
|
-
// "over" the deleted tags
|
236
|
-
// 3) repeat #1 and #2 until we have seen all tags
|
237
|
-
// 4) if we are still looking for a not-deleted tag, then all the end portion
|
238
|
-
// of the kvm is deleted. Just reduce the used amount of memory by the
|
239
|
-
// appropriate amount.
|
240
|
-
static void tag_set_flatten(struct tag_set *tags) {
|
241
|
-
if (tags->ntags == tags->ntags_alloc) return;
|
242
|
-
bool found_deleted = false; // found a deleted tag.
|
243
|
-
char *kvp = tags->kvm;
|
244
|
-
char *dbase = NULL; // record location of deleted tag
|
245
|
-
for (int i = 0; i < tags->ntags_alloc; i++) {
|
246
|
-
struct raw_tag tag;
|
247
|
-
char *next_kvp = decode_tag(&tag, kvp, 0);
|
248
|
-
if (found_deleted) {
|
249
|
-
if (!CENSUS_TAG_IS_DELETED(tag.flags)) {
|
250
|
-
ptrdiff_t reduce = kvp - dbase; // #bytes in deleted tags
|
251
|
-
GPR_ASSERT(reduce > 0);
|
252
|
-
ptrdiff_t copy_size = tags->kvm + tags->kvm_used - kvp;
|
253
|
-
GPR_ASSERT(copy_size > 0);
|
254
|
-
memmove(dbase, kvp, (size_t)copy_size);
|
255
|
-
tags->kvm_used -= (size_t)reduce;
|
256
|
-
next_kvp -= reduce;
|
257
|
-
found_deleted = false;
|
258
|
-
}
|
259
|
-
} else {
|
260
|
-
if (CENSUS_TAG_IS_DELETED(tag.flags)) {
|
261
|
-
dbase = kvp;
|
262
|
-
found_deleted = true;
|
263
|
-
}
|
264
|
-
}
|
265
|
-
kvp = next_kvp;
|
266
|
-
}
|
267
|
-
if (found_deleted) {
|
268
|
-
GPR_ASSERT(dbase > tags->kvm);
|
269
|
-
tags->kvm_used = (size_t)(dbase - tags->kvm);
|
270
|
-
}
|
271
|
-
tags->ntags_alloc = tags->ntags;
|
272
|
-
}
|
273
|
-
|
274
|
-
census_context *census_context_create(const census_context *base,
|
275
|
-
const census_tag *tags, int ntags,
|
276
|
-
census_context_status const **status) {
|
277
|
-
census_context *context =
|
278
|
-
(census_context *)gpr_malloc(sizeof(census_context));
|
279
|
-
// If we are given a base, copy it into our new tag set. Otherwise set it
|
280
|
-
// to zero/NULL everything.
|
281
|
-
if (base == NULL) {
|
282
|
-
memset(context, 0, sizeof(census_context));
|
283
|
-
} else {
|
284
|
-
tag_set_copy(&context->tags[PROPAGATED_TAGS], &base->tags[PROPAGATED_TAGS]);
|
285
|
-
tag_set_copy(&context->tags[LOCAL_TAGS], &base->tags[LOCAL_TAGS]);
|
286
|
-
memset(&context->status, 0, sizeof(context->status));
|
287
|
-
}
|
288
|
-
// Walk over the additional tags and, for those that aren't invalid, modify
|
289
|
-
// the context to add/replace/delete as required.
|
290
|
-
for (int i = 0; i < ntags; i++) {
|
291
|
-
const census_tag *tag = &tags[i];
|
292
|
-
size_t key_len = validate_tag(tag->key);
|
293
|
-
// ignore the tag if it is invalid or too short.
|
294
|
-
if (key_len <= 1) {
|
295
|
-
context->status.n_invalid_tags++;
|
296
|
-
} else {
|
297
|
-
if (tag->value != NULL) {
|
298
|
-
size_t value_len = validate_tag(tag->value);
|
299
|
-
if (value_len != 0) {
|
300
|
-
context_modify_tag(context, tag, key_len, value_len);
|
301
|
-
} else {
|
302
|
-
context->status.n_invalid_tags++;
|
303
|
-
}
|
304
|
-
} else {
|
305
|
-
if (context_delete_tag(context, tag, key_len)) {
|
306
|
-
context->status.n_deleted_tags++;
|
307
|
-
}
|
308
|
-
}
|
309
|
-
}
|
310
|
-
}
|
311
|
-
// Remove any deleted tags, update status if needed, and return.
|
312
|
-
tag_set_flatten(&context->tags[PROPAGATED_TAGS]);
|
313
|
-
tag_set_flatten(&context->tags[LOCAL_TAGS]);
|
314
|
-
context->status.n_propagated_tags = context->tags[PROPAGATED_TAGS].ntags;
|
315
|
-
context->status.n_local_tags = context->tags[LOCAL_TAGS].ntags;
|
316
|
-
if (status) {
|
317
|
-
*status = &context->status;
|
318
|
-
}
|
319
|
-
return context;
|
320
|
-
}
|
321
|
-
|
322
|
-
const census_context_status *census_context_get_status(
|
323
|
-
const census_context *context) {
|
324
|
-
return &context->status;
|
325
|
-
}
|
326
|
-
|
327
|
-
void census_context_destroy(census_context *context) {
|
328
|
-
gpr_free(context->tags[PROPAGATED_TAGS].kvm);
|
329
|
-
gpr_free(context->tags[LOCAL_TAGS].kvm);
|
330
|
-
gpr_free(context);
|
331
|
-
}
|
332
|
-
|
333
|
-
void census_context_initialize_iterator(const census_context *context,
|
334
|
-
census_context_iterator *iterator) {
|
335
|
-
iterator->context = context;
|
336
|
-
iterator->index = 0;
|
337
|
-
if (context->tags[PROPAGATED_TAGS].ntags != 0) {
|
338
|
-
iterator->base = PROPAGATED_TAGS;
|
339
|
-
iterator->kvm = context->tags[PROPAGATED_TAGS].kvm;
|
340
|
-
} else if (context->tags[LOCAL_TAGS].ntags != 0) {
|
341
|
-
iterator->base = LOCAL_TAGS;
|
342
|
-
iterator->kvm = context->tags[LOCAL_TAGS].kvm;
|
343
|
-
} else {
|
344
|
-
iterator->base = -1;
|
345
|
-
}
|
346
|
-
}
|
347
|
-
|
348
|
-
int census_context_next_tag(census_context_iterator *iterator,
|
349
|
-
census_tag *tag) {
|
350
|
-
if (iterator->base < 0) {
|
351
|
-
return 0;
|
352
|
-
}
|
353
|
-
struct raw_tag raw;
|
354
|
-
iterator->kvm = decode_tag(&raw, iterator->kvm, 0);
|
355
|
-
tag->key = raw.key;
|
356
|
-
tag->value = raw.value;
|
357
|
-
tag->flags = raw.flags;
|
358
|
-
if (++iterator->index == iterator->context->tags[iterator->base].ntags) {
|
359
|
-
do {
|
360
|
-
if (iterator->base == LOCAL_TAGS) {
|
361
|
-
iterator->base = -1;
|
362
|
-
return 1;
|
363
|
-
}
|
364
|
-
} while (iterator->context->tags[++iterator->base].ntags == 0);
|
365
|
-
iterator->index = 0;
|
366
|
-
iterator->kvm = iterator->context->tags[iterator->base].kvm;
|
367
|
-
}
|
368
|
-
return 1;
|
369
|
-
}
|
370
|
-
|
371
|
-
// Find a tag in a tag_set by key. Return true if found, false otherwise.
|
372
|
-
static bool tag_set_get_tag(const struct tag_set *tags, const char *key,
|
373
|
-
size_t key_len, census_tag *tag) {
|
374
|
-
char *kvp = tags->kvm;
|
375
|
-
for (int i = 0; i < tags->ntags; i++) {
|
376
|
-
struct raw_tag raw;
|
377
|
-
kvp = decode_tag(&raw, kvp, 0);
|
378
|
-
if (key_len == raw.key_len && memcmp(raw.key, key, key_len) == 0) {
|
379
|
-
tag->key = raw.key;
|
380
|
-
tag->value = raw.value;
|
381
|
-
tag->flags = raw.flags;
|
382
|
-
return true;
|
383
|
-
}
|
384
|
-
}
|
385
|
-
return false;
|
386
|
-
}
|
387
|
-
|
388
|
-
int census_context_get_tag(const census_context *context, const char *key,
|
389
|
-
census_tag *tag) {
|
390
|
-
size_t key_len = strlen(key) + 1;
|
391
|
-
if (key_len == 1) {
|
392
|
-
return 0;
|
393
|
-
}
|
394
|
-
if (tag_set_get_tag(&context->tags[PROPAGATED_TAGS], key, key_len, tag) ||
|
395
|
-
tag_set_get_tag(&context->tags[LOCAL_TAGS], key, key_len, tag)) {
|
396
|
-
return 1;
|
397
|
-
}
|
398
|
-
return 0;
|
399
|
-
}
|
400
|
-
|
401
|
-
// Context encoding and decoding functions.
|
402
|
-
//
|
403
|
-
// Wire format for tag_set's on the wire:
|
404
|
-
//
|
405
|
-
// First, a tag set header:
|
406
|
-
//
|
407
|
-
// offset bytes description
|
408
|
-
// 0 1 version number
|
409
|
-
// 1 1 number of bytes in this header. This allows for future
|
410
|
-
// expansion.
|
411
|
-
// 2 1 number of bytes in each tag header.
|
412
|
-
// 3 1 ntags value from tag set.
|
413
|
-
//
|
414
|
-
// This is followed by the key/value memory from struct tag_set.
|
415
|
-
|
416
|
-
#define ENCODED_VERSION 0 // Version number
|
417
|
-
#define ENCODED_HEADER_SIZE 4 // size of tag set header
|
418
|
-
|
419
|
-
// Encode a tag set. Returns 0 if buffer is too small.
|
420
|
-
static size_t tag_set_encode(const struct tag_set *tags, char *buffer,
|
421
|
-
size_t buf_size) {
|
422
|
-
if (buf_size < ENCODED_HEADER_SIZE + tags->kvm_used) {
|
423
|
-
return 0;
|
424
|
-
}
|
425
|
-
buf_size -= ENCODED_HEADER_SIZE;
|
426
|
-
*buffer++ = (char)ENCODED_VERSION;
|
427
|
-
*buffer++ = (char)ENCODED_HEADER_SIZE;
|
428
|
-
*buffer++ = (char)TAG_HEADER_SIZE;
|
429
|
-
*buffer++ = (char)tags->ntags;
|
430
|
-
if (tags->ntags == 0) {
|
431
|
-
return ENCODED_HEADER_SIZE;
|
432
|
-
}
|
433
|
-
memcpy(buffer, tags->kvm, tags->kvm_used);
|
434
|
-
return ENCODED_HEADER_SIZE + tags->kvm_used;
|
435
|
-
}
|
436
|
-
|
437
|
-
size_t census_context_encode(const census_context *context, char *buffer,
|
438
|
-
size_t buf_size) {
|
439
|
-
return tag_set_encode(&context->tags[PROPAGATED_TAGS], buffer, buf_size);
|
440
|
-
}
|
441
|
-
|
442
|
-
// Decode a tag set.
|
443
|
-
static void tag_set_decode(struct tag_set *tags, const char *buffer,
|
444
|
-
size_t size) {
|
445
|
-
uint8_t version = (uint8_t)(*buffer++);
|
446
|
-
uint8_t header_size = (uint8_t)(*buffer++);
|
447
|
-
uint8_t tag_header_size = (uint8_t)(*buffer++);
|
448
|
-
tags->ntags = tags->ntags_alloc = (int)(*buffer++);
|
449
|
-
if (tags->ntags == 0) {
|
450
|
-
tags->ntags_alloc = 0;
|
451
|
-
tags->kvm_size = 0;
|
452
|
-
tags->kvm_used = 0;
|
453
|
-
tags->kvm = NULL;
|
454
|
-
return;
|
455
|
-
}
|
456
|
-
if (header_size != ENCODED_HEADER_SIZE) {
|
457
|
-
GPR_ASSERT(version != ENCODED_VERSION);
|
458
|
-
GPR_ASSERT(ENCODED_HEADER_SIZE < header_size);
|
459
|
-
buffer += (header_size - ENCODED_HEADER_SIZE);
|
460
|
-
}
|
461
|
-
tags->kvm_used = size - header_size;
|
462
|
-
tags->kvm_size = tags->kvm_used + CENSUS_MAX_TAG_KV_LEN;
|
463
|
-
tags->kvm = (char *)gpr_malloc(tags->kvm_size);
|
464
|
-
if (tag_header_size != TAG_HEADER_SIZE) {
|
465
|
-
// something new in the tag information. I don't understand it, so
|
466
|
-
// don't copy it over.
|
467
|
-
GPR_ASSERT(version != ENCODED_VERSION);
|
468
|
-
GPR_ASSERT(tag_header_size > TAG_HEADER_SIZE);
|
469
|
-
char *kvp = tags->kvm;
|
470
|
-
for (int i = 0; i < tags->ntags; i++) {
|
471
|
-
memcpy(kvp, buffer, TAG_HEADER_SIZE);
|
472
|
-
kvp += header_size;
|
473
|
-
struct raw_tag raw;
|
474
|
-
buffer =
|
475
|
-
decode_tag(&raw, (char *)buffer, tag_header_size - TAG_HEADER_SIZE);
|
476
|
-
memcpy(kvp, raw.key, (size_t)raw.key_len + raw.value_len);
|
477
|
-
kvp += raw.key_len + raw.value_len;
|
478
|
-
}
|
479
|
-
} else {
|
480
|
-
memcpy(tags->kvm, buffer, tags->kvm_used);
|
481
|
-
}
|
482
|
-
}
|
483
|
-
|
484
|
-
census_context *census_context_decode(const char *buffer, size_t size) {
|
485
|
-
census_context *context =
|
486
|
-
(census_context *)gpr_malloc(sizeof(census_context));
|
487
|
-
memset(&context->tags[LOCAL_TAGS], 0, sizeof(struct tag_set));
|
488
|
-
if (buffer == NULL) {
|
489
|
-
memset(&context->tags[PROPAGATED_TAGS], 0, sizeof(struct tag_set));
|
490
|
-
} else {
|
491
|
-
tag_set_decode(&context->tags[PROPAGATED_TAGS], buffer, size);
|
492
|
-
}
|
493
|
-
memset(&context->status, 0, sizeof(context->status));
|
494
|
-
context->status.n_propagated_tags = context->tags[PROPAGATED_TAGS].ntags;
|
495
|
-
return context;
|
496
|
-
}
|