grpc 1.0.1 → 1.1.2
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 +3696 -867
- data/etc/roots.pem +39 -111
- data/include/grpc/byte_buffer.h +64 -1
- data/include/grpc/census.h +40 -96
- data/include/grpc/compression.h +2 -1
- data/include/grpc/grpc.h +42 -7
- data/include/grpc/grpc_posix.h +8 -5
- data/include/grpc/impl/codegen/atm.h +3 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +2 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +8 -0
- data/include/grpc/impl/codegen/atm_windows.h +4 -0
- data/include/grpc/impl/codegen/byte_buffer_reader.h +4 -4
- data/include/grpc/impl/codegen/compression_types.h +1 -1
- data/include/grpc/impl/codegen/connectivity_state.h +2 -0
- data/include/grpc/impl/codegen/exec_ctx_fwd.h +41 -0
- data/include/grpc/impl/codegen/gpr_slice.h +84 -0
- data/include/grpc/impl/codegen/{alloc.h → gpr_types.h} +30 -29
- data/include/grpc/impl/codegen/grpc_types.h +91 -9
- data/include/grpc/impl/codegen/port_platform.h +25 -92
- data/include/grpc/impl/codegen/slice.h +54 -97
- data/include/grpc/impl/codegen/sync.h +0 -253
- data/include/grpc/module.modulemap +0 -2
- data/include/grpc/slice.h +132 -0
- data/include/grpc/{impl/codegen/slice_buffer.h → slice_buffer.h} +22 -39
- data/include/grpc/support/alloc.h +40 -1
- data/include/grpc/support/log.h +80 -1
- data/include/grpc/support/log_windows.h +2 -0
- data/include/grpc/support/string_util.h +1 -1
- data/include/grpc/support/sync.h +252 -0
- data/include/grpc/support/time.h +67 -1
- data/src/boringssl/err_data.c +639 -627
- data/src/core/ext/census/base_resources.c +71 -0
- data/src/core/ext/census/base_resources.h +39 -0
- data/src/core/ext/census/gen/census.pb.c +26 -29
- data/src/core/ext/census/gen/census.pb.h +68 -67
- data/src/core/ext/census/gen/trace_context.pb.c +81 -0
- data/src/core/ext/census/gen/trace_context.pb.h +99 -0
- data/src/core/ext/census/grpc_filter.c +22 -16
- data/src/core/ext/census/grpc_plugin.c +2 -1
- data/src/core/ext/census/initialize.c +16 -4
- data/src/core/ext/census/mlog.h +1 -1
- data/src/core/ext/census/placeholders.c +0 -45
- data/src/core/ext/census/resource.c +312 -0
- data/src/core/ext/census/resource.h +63 -0
- data/src/core/ext/census/trace_context.c +86 -0
- data/src/core/ext/census/trace_context.h +68 -0
- data/src/core/ext/census/tracing.c +8 -2
- data/src/core/ext/{client_config → client_channel}/channel_connectivity.c +8 -4
- data/src/core/ext/client_channel/client_channel.c +1218 -0
- data/src/core/ext/{client_config → client_channel}/client_channel.h +8 -11
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.c +33 -3
- data/src/core/ext/{client_config → client_channel}/client_channel_factory.h +15 -8
- data/src/core/ext/{client_config/client_config_plugin.c → client_channel/client_channel_plugin.c} +16 -15
- data/src/core/ext/{client_config → client_channel}/connector.c +1 -1
- data/src/core/ext/{client_config → client_channel}/connector.h +5 -8
- data/{include/grpc/support/slice_buffer.h → src/core/ext/client_channel/default_initial_connect_string.c} +4 -5
- data/src/core/ext/client_channel/http_connect_handshaker.c +399 -0
- data/src/core/ext/client_channel/http_connect_handshaker.h +52 -0
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.c +6 -7
- data/src/core/ext/{client_config → client_channel}/initial_connect_string.h +10 -10
- data/src/core/ext/{client_config → client_channel}/lb_policy.c +11 -11
- data/src/core/ext/{client_config → client_channel}/lb_policy.h +68 -27
- data/src/core/ext/client_channel/lb_policy_factory.c +163 -0
- data/src/core/ext/{client_config → client_channel}/lb_policy_factory.h +64 -9
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.c +6 -4
- data/src/core/ext/{client_config → client_channel}/lb_policy_registry.h +4 -4
- data/src/core/ext/{client_config → client_channel}/parse_address.c +21 -14
- data/src/core/ext/{client_config → client_channel}/parse_address.h +8 -10
- data/src/core/ext/{client_config → client_channel}/resolver.c +3 -4
- data/src/core/ext/{client_config → client_channel}/resolver.h +11 -15
- data/src/core/ext/{client_config → client_channel}/resolver_factory.c +4 -3
- data/src/core/ext/{client_config → client_channel}/resolver_factory.h +13 -11
- data/src/core/ext/{client_config → client_channel}/resolver_registry.c +54 -34
- data/src/core/ext/{client_config → client_channel}/resolver_registry.h +21 -8
- data/src/core/ext/{client_config → client_channel}/subchannel.c +208 -119
- data/src/core/ext/{client_config → client_channel}/subchannel.h +21 -11
- data/src/core/ext/{client_config → client_channel}/subchannel_index.c +6 -17
- data/src/core/ext/{client_config → client_channel}/subchannel_index.h +7 -7
- data/src/core/ext/{client_config → client_channel}/uri_parser.c +21 -28
- data/src/core/ext/{client_config → client_channel}/uri_parser.h +3 -3
- data/src/core/ext/lb_policy/grpclb/grpclb.c +1406 -0
- data/src/core/ext/lb_policy/grpclb/grpclb.h +44 -0
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.c +117 -37
- data/src/core/ext/lb_policy/grpclb/load_balancer_api.h +31 -12
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.c +6 -36
- data/src/core/ext/lb_policy/grpclb/proto/grpc/lb/v1/load_balancer.pb.h +22 -42
- data/src/core/ext/lb_policy/pick_first/pick_first.c +64 -46
- data/src/core/ext/lb_policy/round_robin/round_robin.c +324 -160
- data/src/core/ext/load_reporting/load_reporting.c +7 -56
- data/src/core/ext/load_reporting/load_reporting.h +41 -28
- data/src/core/ext/load_reporting/load_reporting_filter.c +132 -42
- data/src/core/ext/load_reporting/load_reporting_filter.h +1 -0
- data/src/core/ext/resolver/dns/native/dns_resolver.c +88 -80
- data/src/core/ext/resolver/sockaddr/sockaddr_resolver.c +57 -102
- data/src/core/ext/transport/chttp2/alpn/alpn.c +1 -1
- data/src/core/ext/transport/chttp2/client/chttp2_connector.c +253 -0
- data/src/core/{lib/iomgr/ev_poll_and_epoll_posix.h → ext/transport/chttp2/client/chttp2_connector.h} +5 -5
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.c +31 -160
- data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.c +5 -5
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.c +44 -243
- data/src/core/ext/transport/chttp2/server/chttp2_server.c +342 -0
- data/src/core/ext/transport/chttp2/server/chttp2_server.h +47 -0
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.c +11 -124
- data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.c +20 -9
- data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.c +28 -236
- data/src/core/ext/transport/chttp2/transport/bin_decoder.c +31 -27
- data/src/core/ext/transport/chttp2/transport/bin_decoder.h +5 -4
- data/src/core/ext/transport/chttp2/transport/bin_encoder.c +25 -22
- data/src/core/ext/transport/chttp2/transport/bin_encoder.h +8 -7
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.c +0 -3
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.c +1345 -1521
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +3 -1
- data/src/core/ext/transport/chttp2/transport/frame.h +3 -5
- data/src/core/ext/transport/chttp2/transport/frame_data.c +50 -47
- data/src/core/ext/transport/chttp2/transport/frame_data.h +8 -9
- data/src/core/ext/transport/chttp2/transport/frame_goaway.c +19 -21
- data/src/core/ext/transport/chttp2/transport/frame_goaway.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_ping.c +13 -12
- data/src/core/ext/transport/chttp2/transport/frame_ping.h +6 -6
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.c +31 -19
- data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +8 -7
- data/src/core/ext/transport/chttp2/transport/frame_settings.c +22 -25
- data/src/core/ext/transport/chttp2/transport/frame_settings.h +9 -8
- data/src/core/ext/transport/chttp2/transport/frame_window_update.c +26 -18
- data/src/core/ext/transport/chttp2/transport/frame_window_update.h +5 -6
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.c +68 -58
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +8 -5
- data/src/core/ext/transport/chttp2/transport/hpack_parser.c +327 -214
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +14 -9
- data/src/core/ext/transport/chttp2/transport/hpack_table.c +24 -19
- data/src/core/ext/transport/chttp2/transport/hpack_table.h +9 -6
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.c +2 -2
- data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +1 -1
- data/src/core/ext/transport/chttp2/transport/internal.h +284 -436
- data/src/core/ext/transport/chttp2/transport/parsing.c +355 -590
- data/src/core/ext/transport/chttp2/transport/stream_lists.c +36 -309
- data/src/core/ext/transport/chttp2/transport/stream_map.c +13 -34
- data/src/core/ext/transport/chttp2/transport/stream_map.h +3 -4
- data/src/core/ext/transport/chttp2/transport/writing.c +174 -286
- data/src/core/lib/channel/channel_args.c +70 -13
- data/src/core/lib/channel/channel_args.h +28 -2
- data/src/core/lib/channel/channel_stack.c +77 -28
- data/src/core/lib/channel/channel_stack.h +61 -23
- data/src/core/lib/channel/channel_stack_builder.c +33 -25
- data/src/core/lib/channel/channel_stack_builder.h +17 -8
- data/src/core/lib/channel/compress_filter.c +52 -36
- data/src/core/lib/channel/connected_channel.c +20 -12
- data/src/core/lib/channel/connected_channel.h +2 -1
- data/src/core/lib/channel/context.h +13 -1
- data/src/core/lib/channel/deadline_filter.c +344 -0
- data/src/core/lib/channel/deadline_filter.h +99 -0
- data/src/core/lib/channel/handshaker.c +240 -0
- data/src/core/lib/channel/handshaker.h +164 -0
- data/src/core/lib/{security/credentials/google_default/credentials_windows.c → channel/handshaker_factory.c} +16 -23
- data/src/core/lib/channel/handshaker_factory.h +66 -0
- data/src/core/lib/channel/handshaker_registry.c +113 -0
- data/src/core/{ext/client_config/client_config.h → lib/channel/handshaker_registry.h} +26 -16
- data/src/core/lib/channel/http_client_filter.c +248 -46
- data/src/core/lib/channel/http_client_filter.h +3 -0
- data/src/core/lib/channel/http_server_filter.c +136 -24
- data/src/core/lib/channel/message_size_filter.c +261 -0
- data/src/core/lib/channel/message_size_filter.h +39 -0
- data/src/core/lib/compression/message_compress.c +43 -37
- data/src/core/lib/compression/message_compress.h +7 -5
- data/src/core/lib/http/format_request.c +26 -11
- data/src/core/lib/http/format_request.h +7 -5
- data/src/core/lib/http/httpcli.c +45 -27
- data/src/core/lib/http/httpcli.h +4 -4
- data/src/core/lib/http/httpcli_security_connector.c +56 -46
- data/src/core/lib/http/parser.c +17 -14
- data/src/core/lib/http/parser.h +4 -2
- data/src/core/lib/iomgr/closure.c +49 -7
- data/src/core/lib/iomgr/closure.h +56 -14
- data/src/core/lib/iomgr/combiner.c +422 -0
- data/src/core/lib/iomgr/combiner.h +64 -0
- data/src/core/lib/iomgr/endpoint.c +8 -2
- data/src/core/lib/iomgr/endpoint.h +17 -7
- data/src/core/lib/iomgr/endpoint_pair.h +3 -2
- data/src/core/lib/iomgr/endpoint_pair_posix.c +9 -8
- data/src/core/{ext/client_config/lb_policy_factory.c → lib/iomgr/endpoint_pair_uv.c} +18 -13
- data/src/core/lib/iomgr/endpoint_pair_windows.c +7 -6
- data/src/core/lib/iomgr/error.c +72 -6
- data/src/core/lib/iomgr/error.h +30 -3
- data/src/core/lib/iomgr/ev_epoll_linux.c +500 -382
- data/src/core/lib/iomgr/ev_epoll_linux.h +3 -2
- data/src/core/lib/iomgr/ev_poll_posix.c +317 -30
- data/src/core/lib/iomgr/ev_poll_posix.h +1 -0
- data/src/core/lib/iomgr/ev_posix.c +26 -5
- data/src/core/lib/iomgr/ev_posix.h +12 -1
- data/src/core/lib/iomgr/exec_ctx.c +27 -94
- data/src/core/lib/iomgr/exec_ctx.h +19 -22
- data/src/core/lib/iomgr/executor.c +29 -8
- data/src/core/lib/iomgr/executor.h +2 -4
- data/src/core/lib/iomgr/iocp_windows.c +3 -4
- data/src/core/lib/iomgr/iomgr.c +14 -10
- data/src/core/lib/iomgr/iomgr.h +6 -2
- data/src/core/lib/iomgr/iomgr_posix.c +2 -2
- data/src/core/lib/iomgr/iomgr_uv.c +49 -0
- data/src/core/lib/iomgr/iomgr_windows.c +2 -2
- data/src/core/lib/iomgr/load_file.c +3 -3
- data/src/core/lib/iomgr/load_file.h +2 -2
- data/src/core/lib/iomgr/network_status_tracker.c +1 -1
- data/src/core/lib/iomgr/pollset_set_uv.c +62 -0
- data/src/core/lib/iomgr/pollset_set_windows.c +3 -3
- data/src/core/lib/iomgr/pollset_uv.c +142 -0
- data/src/core/lib/iomgr/pollset_uv.h +42 -0
- data/src/core/lib/iomgr/pollset_windows.c +5 -6
- data/src/core/lib/iomgr/port.h +129 -0
- data/src/core/lib/iomgr/resolve_address.h +2 -1
- data/src/core/lib/iomgr/resolve_address_posix.c +14 -13
- data/src/core/lib/iomgr/resolve_address_uv.c +233 -0
- data/src/core/lib/iomgr/resolve_address_windows.c +14 -12
- data/src/core/lib/iomgr/resource_quota.c +832 -0
- data/src/core/lib/iomgr/resource_quota.h +159 -0
- data/src/core/lib/iomgr/sockaddr.h +10 -2
- data/src/core/lib/iomgr/sockaddr_utils.c +63 -36
- data/src/core/lib/iomgr/sockaddr_utils.h +14 -14
- data/src/core/lib/iomgr/socket_mutator.c +98 -0
- data/src/core/lib/iomgr/socket_mutator.h +80 -0
- data/src/core/lib/iomgr/socket_utils.h +42 -0
- data/src/core/lib/iomgr/socket_utils_common_posix.c +28 -13
- data/src/core/lib/iomgr/socket_utils_linux.c +11 -5
- data/src/core/lib/iomgr/socket_utils_posix.c +10 -7
- data/src/core/lib/iomgr/socket_utils_posix.h +11 -4
- data/src/core/lib/iomgr/socket_utils_uv.c +49 -0
- data/src/core/lib/iomgr/socket_utils_windows.c +52 -0
- data/src/core/lib/iomgr/socket_windows.c +14 -6
- data/src/core/lib/iomgr/socket_windows.h +1 -0
- data/src/core/lib/iomgr/tcp_client.h +8 -2
- data/src/core/lib/iomgr/tcp_client_posix.c +131 -82
- data/src/core/lib/iomgr/tcp_client_posix.h +45 -0
- data/src/core/lib/iomgr/tcp_client_uv.c +190 -0
- data/src/core/lib/iomgr/tcp_client_windows.c +54 -30
- data/src/core/lib/iomgr/tcp_posix.c +135 -56
- data/src/core/lib/iomgr/tcp_posix.h +2 -2
- data/src/core/lib/iomgr/tcp_server.h +14 -6
- data/src/core/lib/iomgr/tcp_server_posix.c +154 -118
- data/src/core/lib/iomgr/tcp_server_uv.c +388 -0
- data/src/core/lib/iomgr/tcp_server_windows.c +127 -100
- data/src/core/lib/iomgr/tcp_uv.c +367 -0
- data/src/core/lib/iomgr/tcp_uv.h +59 -0
- data/src/core/lib/iomgr/tcp_windows.c +65 -48
- data/src/core/lib/iomgr/tcp_windows.h +3 -1
- data/src/core/lib/iomgr/timer.h +21 -21
- data/src/core/lib/iomgr/{timer.c → timer_generic.c} +15 -10
- data/src/core/lib/iomgr/timer_generic.h +49 -0
- data/src/core/lib/iomgr/timer_heap.c +6 -0
- data/src/core/lib/iomgr/timer_uv.c +99 -0
- data/src/core/lib/iomgr/timer_uv.h +47 -0
- data/src/core/lib/iomgr/udp_server.c +116 -98
- data/src/core/lib/iomgr/udp_server.h +5 -3
- data/src/core/lib/iomgr/unix_sockets_posix.c +14 -6
- data/src/core/lib/iomgr/unix_sockets_posix.h +6 -5
- data/src/core/lib/iomgr/unix_sockets_posix_noop.c +4 -4
- data/src/core/lib/iomgr/wakeup_fd_cv.c +118 -0
- data/src/core/lib/iomgr/wakeup_fd_cv.h +80 -0
- data/src/core/lib/iomgr/wakeup_fd_eventfd.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_nospecial.c +3 -3
- data/src/core/lib/iomgr/wakeup_fd_pipe.c +12 -6
- data/src/core/lib/iomgr/wakeup_fd_posix.c +34 -5
- data/src/core/lib/iomgr/wakeup_fd_posix.h +5 -0
- data/src/core/lib/iomgr/workqueue.h +12 -20
- data/src/core/{ext/client_config/client_config.c → lib/iomgr/workqueue_uv.c} +24 -33
- data/{include/grpc/support/slice.h → src/core/lib/iomgr/workqueue_uv.h} +4 -6
- data/src/core/lib/iomgr/workqueue_windows.c +9 -8
- data/src/core/lib/json/json.c +3 -3
- data/src/core/lib/json/json.h +11 -11
- data/src/core/lib/json/json_reader.c +9 -5
- data/src/core/lib/profiling/basic_timers.c +10 -1
- data/src/core/lib/profiling/timers.h +2 -0
- data/src/core/lib/security/context/security_context.c +13 -3
- data/src/core/lib/security/context/security_context.h +20 -0
- data/src/core/lib/security/credentials/composite/composite_credentials.c +28 -14
- data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
- data/src/core/lib/security/credentials/credentials.c +48 -19
- data/src/core/lib/security/credentials/credentials.h +36 -19
- data/src/core/lib/security/credentials/credentials_metadata.c +11 -8
- data/src/core/lib/security/credentials/fake/fake_credentials.c +15 -11
- data/src/core/lib/security/credentials/google_default/{credentials_posix.c → credentials_generic.c} +7 -14
- data/src/core/lib/security/credentials/google_default/google_default_credentials.c +33 -21
- data/src/core/lib/security/credentials/google_default/google_default_credentials.h +14 -0
- data/src/core/lib/security/credentials/iam/iam_credentials.c +3 -2
- data/src/core/lib/security/credentials/jwt/json_token.c +1 -0
- data/src/core/lib/security/credentials/jwt/json_token.h +1 -1
- data/src/core/lib/security/credentials/jwt/jwt_credentials.c +54 -19
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -1
- data/src/core/lib/security/credentials/jwt/jwt_verifier.c +129 -79
- data/src/core/lib/security/credentials/jwt/jwt_verifier.h +9 -6
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.c +63 -28
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +1 -1
- data/src/core/lib/security/credentials/plugin/plugin_credentials.c +32 -11
- data/src/core/lib/security/credentials/ssl/ssl_credentials.c +13 -9
- data/src/core/lib/security/transport/client_auth_filter.c +33 -27
- data/src/core/lib/security/transport/secure_endpoint.c +93 -68
- data/src/core/lib/security/transport/secure_endpoint.h +2 -2
- data/src/core/lib/security/transport/security_connector.c +133 -168
- data/src/core/lib/security/transport/security_connector.h +31 -46
- data/src/core/lib/security/transport/security_handshaker.c +501 -0
- data/src/core/lib/security/transport/{handshake.h → security_handshaker.h} +10 -10
- data/src/core/lib/security/transport/server_auth_filter.c +50 -38
- data/src/core/lib/security/util/b64.c +11 -8
- data/src/core/lib/security/util/b64.h +5 -4
- data/src/core/lib/slice/percent_encoding.c +182 -0
- data/src/core/lib/slice/percent_encoding.h +78 -0
- data/src/core/lib/{support → slice}/slice.c +81 -50
- data/src/core/lib/{support → slice}/slice_buffer.c +78 -60
- data/src/core/lib/slice/slice_internal.h +49 -0
- data/src/core/lib/slice/slice_string_helpers.c +90 -0
- data/src/core/lib/{iomgr/workqueue_posix.h → slice/slice_string_helpers.h} +18 -18
- data/src/core/lib/support/backoff.c +24 -13
- data/src/core/lib/support/backoff.h +5 -2
- data/src/core/lib/support/env.h +0 -2
- data/src/core/lib/support/log.c +5 -4
- data/src/core/lib/support/log_linux.c +0 -1
- data/src/core/lib/support/log_posix.c +1 -1
- data/src/core/lib/support/mpscq.c +83 -0
- data/src/core/lib/support/mpscq.h +65 -0
- data/src/core/lib/support/string.c +58 -49
- data/src/core/lib/support/string.h +11 -8
- data/src/core/lib/support/subprocess_posix.c +5 -2
- data/src/core/lib/support/thd.c +1 -1
- data/src/core/lib/support/time.c +43 -79
- data/src/core/lib/support/time_posix.c +1 -1
- data/src/core/lib/support/tmpfile.h +0 -2
- data/src/core/lib/surface/alarm.c +4 -1
- data/src/core/lib/surface/byte_buffer.c +17 -11
- data/src/core/lib/surface/byte_buffer_reader.c +23 -15
- data/src/core/lib/surface/call.c +294 -276
- data/src/core/lib/surface/call.h +24 -9
- data/src/core/lib/surface/call_log_batch.c +5 -3
- data/src/core/lib/surface/channel.c +127 -111
- data/src/core/lib/surface/channel.h +14 -5
- data/src/core/lib/surface/channel_init.c +1 -1
- data/src/core/lib/surface/channel_init.h +10 -1
- data/src/core/lib/surface/channel_ping.c +7 -6
- data/src/core/lib/surface/completion_queue.c +154 -18
- data/src/core/lib/surface/completion_queue.h +5 -0
- data/src/core/lib/surface/init.c +40 -6
- data/src/core/lib/surface/init.h +1 -0
- data/src/core/lib/surface/init_secure.c +5 -2
- data/src/core/lib/surface/lame_client.c +28 -18
- data/src/core/lib/surface/server.c +134 -87
- data/src/core/lib/surface/server.h +8 -0
- data/src/core/lib/surface/validate_metadata.c +1 -1
- data/src/core/lib/surface/version.c +3 -1
- data/src/core/lib/transport/byte_stream.c +7 -4
- data/src/core/lib/transport/byte_stream.h +6 -10
- data/src/core/lib/transport/connectivity_state.c +21 -12
- data/src/core/lib/transport/connectivity_state.h +4 -1
- data/src/core/lib/transport/mdstr_hash_table.c +118 -0
- data/src/core/lib/transport/mdstr_hash_table.h +77 -0
- data/src/core/lib/transport/metadata.c +83 -60
- data/src/core/lib/transport/metadata.h +41 -23
- data/src/core/lib/transport/metadata_batch.c +17 -11
- data/src/core/lib/transport/metadata_batch.h +20 -6
- data/src/core/lib/transport/pid_controller.c +57 -0
- data/src/core/lib/transport/pid_controller.h +64 -0
- data/src/core/lib/transport/service_config.c +251 -0
- data/src/core/lib/transport/service_config.h +71 -0
- data/src/core/lib/transport/static_metadata.c +18 -16
- data/src/core/lib/transport/static_metadata.h +113 -107
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.c +3 -3
- data/src/core/{ext/transport/chttp2 → lib}/transport/timeout_encoding.h +7 -7
- data/src/core/lib/transport/transport.c +84 -23
- data/src/core/lib/transport/transport.h +53 -8
- data/src/core/lib/transport/transport_impl.h +3 -0
- data/src/core/lib/transport/transport_op_string.c +92 -20
- data/src/core/lib/tsi/ssl_transport_security.c +3 -1
- data/src/core/plugin_registry/grpc_plugin_registry.c +8 -4
- data/src/ruby/ext/grpc/extconf.rb +0 -1
- data/src/ruby/ext/grpc/rb_byte_buffer.c +8 -7
- data/src/ruby/ext/grpc/rb_call.c +15 -5
- data/src/ruby/ext/grpc/rb_channel.c +1 -1
- data/src/ruby/ext/grpc/rb_compression_options.c +466 -0
- data/src/{core/ext/client_config/default_initial_connect_string.c → ruby/ext/grpc/rb_compression_options.h} +10 -5
- data/src/ruby/ext/grpc/rb_grpc.c +3 -1
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +198 -190
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +306 -294
- data/src/ruby/ext/grpc/rb_server.c +18 -12
- data/src/ruby/lib/grpc/errors.rb +154 -2
- data/src/ruby/lib/grpc/generic/active_call.rb +144 -63
- data/src/ruby/lib/grpc/generic/bidi_call.rb +18 -2
- data/src/ruby/lib/grpc/generic/client_stub.rb +7 -5
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +39 -13
- data/src/ruby/lib/grpc/generic/rpc_server.rb +51 -24
- data/src/ruby/lib/grpc/generic/service.rb +3 -2
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/grpc/health/checker.rb +3 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +7 -0
- data/src/ruby/pb/test/client.rb +307 -7
- data/src/ruby/pb/test/server.rb +26 -1
- data/src/ruby/spec/compression_options_spec.rb +164 -0
- data/src/ruby/spec/error_sanity_spec.rb +64 -0
- data/src/ruby/spec/generic/active_call_spec.rb +290 -12
- data/src/ruby/spec/generic/client_stub_spec.rb +91 -41
- data/src/ruby/spec/generic/rpc_desc_spec.rb +36 -16
- data/src/ruby/spec/generic/rpc_server_pool_spec.rb +22 -28
- data/src/ruby/spec/generic/rpc_server_spec.rb +6 -6
- data/src/ruby/spec/pb/health/checker_spec.rb +27 -19
- data/src/ruby/spec/spec_helper.rb +2 -0
- data/third_party/boringssl/crypto/aes/aes.c +12 -12
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +6 -2
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +28 -13
- data/third_party/boringssl/crypto/asn1/a_gentm.c +2 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +7 -3
- data/third_party/boringssl/crypto/asn1/a_strnid.c +1 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +0 -11
- data/third_party/boringssl/crypto/asn1/a_type.c +0 -2
- data/third_party/boringssl/crypto/asn1/a_utctm.c +1 -30
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +56 -76
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +0 -10
- data/third_party/boringssl/crypto/asn1/asn1_par.c +0 -322
- data/third_party/boringssl/crypto/asn1/f_enum.c +1 -108
- data/third_party/boringssl/crypto/asn1/f_int.c +1 -106
- data/third_party/boringssl/crypto/asn1/f_string.c +1 -106
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +10 -14
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +17 -11
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +29 -42
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +1 -1
- data/third_party/boringssl/crypto/base64/base64.c +249 -285
- data/third_party/boringssl/crypto/bio/bio.c +13 -23
- data/third_party/boringssl/crypto/bio/bio_mem.c +3 -2
- data/third_party/boringssl/crypto/bio/connect.c +12 -3
- data/third_party/boringssl/crypto/bio/fd.c +22 -15
- data/third_party/boringssl/crypto/bio/file.c +2 -38
- data/third_party/boringssl/crypto/bio/hexdump.c +1 -2
- data/third_party/boringssl/crypto/bio/internal.h +3 -0
- data/third_party/boringssl/crypto/bio/pair.c +1 -1
- data/third_party/boringssl/crypto/bio/socket.c +10 -2
- data/third_party/boringssl/crypto/bio/socket_helper.c +2 -2
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +0 -8
- data/third_party/boringssl/crypto/bn/bn.c +38 -0
- data/third_party/boringssl/crypto/bn/cmp.c +25 -0
- data/third_party/boringssl/crypto/bn/convert.c +73 -76
- data/third_party/boringssl/crypto/bn/div.c +136 -70
- data/third_party/boringssl/crypto/bn/exponentiation.c +86 -381
- data/third_party/boringssl/crypto/bn/gcd.c +213 -296
- data/third_party/boringssl/crypto/bn/generic.c +0 -80
- data/third_party/boringssl/crypto/bn/internal.h +15 -3
- data/third_party/boringssl/crypto/bn/montgomery.c +57 -207
- data/third_party/boringssl/crypto/bn/montgomery_inv.c +160 -0
- data/third_party/boringssl/crypto/bn/mul.c +2 -1
- data/third_party/boringssl/crypto/bn/prime.c +24 -8
- data/third_party/boringssl/crypto/bn/random.c +47 -33
- data/third_party/boringssl/crypto/bn/sqrt.c +4 -5
- data/third_party/boringssl/crypto/buf/buf.c +25 -21
- data/third_party/boringssl/crypto/bytestring/ber.c +1 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +50 -22
- data/third_party/boringssl/crypto/bytestring/cbs.c +28 -4
- data/third_party/boringssl/crypto/chacha/{chacha_generic.c → chacha.c} +56 -29
- data/third_party/boringssl/crypto/cipher/aead.c +11 -22
- data/third_party/boringssl/crypto/cipher/cipher.c +2 -2
- data/third_party/boringssl/crypto/cipher/e_aes.c +53 -103
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +2 -8
- data/third_party/boringssl/crypto/cipher/e_des.c +3 -5
- data/third_party/boringssl/crypto/cipher/e_null.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc2.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_rc4.c +1 -1
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +3 -63
- data/third_party/boringssl/crypto/cipher/e_tls.c +12 -83
- data/third_party/boringssl/crypto/cipher/internal.h +8 -10
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +69 -40
- data/third_party/boringssl/crypto/conf/conf.c +2 -1
- data/third_party/boringssl/crypto/cpu-aarch64-linux.c +61 -0
- data/third_party/boringssl/crypto/cpu-arm-linux.c +360 -0
- data/third_party/boringssl/crypto/cpu-arm.c +0 -161
- data/third_party/boringssl/crypto/cpu-intel.c +5 -3
- data/third_party/boringssl/{ssl/test/scoped_types.h → crypto/cpu-ppc64le.c} +21 -9
- data/third_party/boringssl/crypto/crypto.c +29 -7
- data/third_party/boringssl/crypto/curve25519/curve25519.c +284 -242
- data/third_party/boringssl/crypto/curve25519/internal.h +64 -0
- data/third_party/boringssl/crypto/curve25519/spake25519.c +464 -0
- data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +21 -0
- data/third_party/boringssl/crypto/dh/check.c +22 -6
- data/third_party/boringssl/crypto/dh/dh.c +45 -21
- data/third_party/boringssl/crypto/dh/dh_asn1.c +96 -20
- data/third_party/boringssl/crypto/dh/params.c +30 -78
- data/third_party/boringssl/crypto/digest/digest.c +3 -3
- data/third_party/boringssl/crypto/dsa/dsa.c +59 -29
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +4 -0
- data/third_party/boringssl/crypto/ec/ec.c +84 -140
- data/third_party/boringssl/crypto/ec/ec_asn1.c +82 -52
- data/third_party/boringssl/crypto/ec/ec_key.c +15 -15
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +87 -50
- data/third_party/boringssl/crypto/ec/internal.h +12 -36
- data/third_party/boringssl/crypto/ec/oct.c +11 -11
- data/third_party/boringssl/crypto/ec/p224-64.c +59 -116
- data/third_party/boringssl/crypto/ec/p256-64.c +88 -163
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +46 -58
- data/third_party/boringssl/crypto/ec/simple.c +81 -201
- data/third_party/boringssl/crypto/ec/util-64.c +0 -74
- data/third_party/boringssl/crypto/ecdh/ecdh.c +7 -1
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +28 -46
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +1 -0
- data/third_party/boringssl/crypto/engine/engine.c +1 -1
- data/third_party/boringssl/crypto/err/err.c +3 -3
- data/third_party/boringssl/crypto/evp/evp.c +14 -59
- data/third_party/boringssl/crypto/evp/evp_asn1.c +144 -87
- data/third_party/boringssl/crypto/evp/evp_ctx.c +7 -7
- data/third_party/boringssl/crypto/evp/internal.h +4 -46
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +8 -157
- data/third_party/boringssl/crypto/evp/p_ec.c +1 -1
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +22 -170
- data/third_party/boringssl/crypto/evp/p_rsa.c +1 -1
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +10 -548
- data/third_party/boringssl/crypto/evp/print.c +520 -0
- data/third_party/boringssl/crypto/ex_data.c +4 -6
- data/third_party/boringssl/crypto/hkdf/hkdf.c +38 -17
- data/third_party/boringssl/crypto/hmac/hmac.c +6 -6
- data/third_party/boringssl/crypto/internal.h +57 -77
- data/third_party/boringssl/crypto/lhash/lhash.c +6 -10
- data/third_party/boringssl/crypto/md4/md4.c +9 -0
- data/third_party/boringssl/crypto/mem.c +19 -19
- data/third_party/boringssl/crypto/modes/cfb.c +5 -6
- data/third_party/boringssl/crypto/modes/ctr.c +10 -18
- data/third_party/boringssl/crypto/modes/gcm.c +100 -66
- data/third_party/boringssl/crypto/modes/internal.h +15 -27
- data/third_party/boringssl/crypto/modes/ofb.c +9 -22
- data/third_party/boringssl/crypto/newhope/error_correction.c +131 -0
- data/third_party/boringssl/crypto/newhope/internal.h +71 -0
- data/third_party/boringssl/crypto/newhope/newhope.c +174 -0
- data/third_party/boringssl/crypto/newhope/ntt.c +148 -0
- data/third_party/boringssl/crypto/newhope/poly.c +183 -0
- data/third_party/boringssl/crypto/newhope/precomp.c +306 -0
- data/third_party/boringssl/crypto/newhope/reduce.c +42 -0
- data/third_party/boringssl/crypto/obj/obj.c +111 -135
- data/third_party/boringssl/crypto/obj/obj_dat.h +4 -10
- data/third_party/boringssl/crypto/pem/pem_lib.c +6 -43
- data/third_party/boringssl/crypto/pem/pem_pkey.c +10 -19
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +1 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +2 -1
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +2 -2
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +95 -87
- data/third_party/boringssl/crypto/{test/test_util.h → poly1305/internal.h} +15 -10
- data/third_party/boringssl/crypto/poly1305/poly1305.c +8 -15
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +1 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +3 -3
- data/third_party/boringssl/crypto/rand/deterministic.c +47 -0
- data/third_party/boringssl/crypto/rand/rand.c +4 -1
- data/third_party/boringssl/crypto/rand/urandom.c +5 -7
- data/third_party/boringssl/crypto/rand/windows.c +5 -8
- data/third_party/boringssl/crypto/rc4/rc4.c +24 -209
- data/third_party/boringssl/crypto/refcount_lock.c +2 -2
- data/third_party/boringssl/crypto/rsa/blinding.c +74 -232
- data/third_party/boringssl/crypto/rsa/internal.h +5 -13
- data/third_party/boringssl/crypto/rsa/padding.c +64 -63
- data/third_party/boringssl/crypto/rsa/rsa.c +50 -28
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +8 -16
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +134 -122
- data/third_party/boringssl/crypto/sha/sha256.c +2 -2
- data/third_party/boringssl/crypto/sha/sha512.c +7 -7
- data/third_party/boringssl/crypto/stack/stack.c +13 -22
- data/third_party/boringssl/crypto/thread.c +21 -12
- data/third_party/boringssl/crypto/thread_none.c +6 -2
- data/third_party/boringssl/crypto/thread_pthread.c +16 -7
- data/third_party/boringssl/crypto/thread_win.c +38 -85
- data/third_party/boringssl/crypto/x509/a_sign.c +3 -3
- data/third_party/boringssl/crypto/x509/a_strex.c +1 -1
- data/third_party/boringssl/crypto/x509/a_verify.c +2 -2
- data/third_party/boringssl/crypto/{evp → x509}/algorithm.c +37 -53
- data/third_party/boringssl/crypto/x509/asn1_gen.c +1 -2
- data/third_party/boringssl/crypto/x509/by_dir.c +6 -6
- data/third_party/boringssl/crypto/x509/internal.h +66 -0
- data/third_party/boringssl/crypto/x509/rsa_pss.c +385 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +10 -12
- data/third_party/boringssl/crypto/x509/x509.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +9 -3
- data/third_party/boringssl/crypto/x509/x509_lu.c +34 -44
- data/third_party/boringssl/crypto/x509/x509_obj.c +19 -2
- data/third_party/boringssl/crypto/x509/x509_r2x.c +9 -5
- data/third_party/boringssl/crypto/x509/x509_set.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +5 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +63 -32
- data/third_party/boringssl/crypto/x509/x509_vpm.c +29 -18
- data/third_party/boringssl/crypto/x509/x509cset.c +2 -1
- data/third_party/boringssl/crypto/x509/x_crl.c +2 -2
- data/third_party/boringssl/crypto/x509/x_name.c +14 -17
- data/third_party/boringssl/crypto/x509/x_pubkey.c +10 -7
- data/third_party/boringssl/crypto/x509/x_x509.c +67 -6
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +2 -2
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +2 -1
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +4 -3
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +5 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +0 -3
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +2 -2
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +2 -1
- data/third_party/boringssl/include/openssl/aead.h +72 -73
- data/third_party/boringssl/include/openssl/arm_arch.h +0 -6
- data/third_party/boringssl/include/openssl/asn1.h +103 -235
- data/third_party/boringssl/include/openssl/asn1_mac.h +17 -74
- data/third_party/boringssl/include/openssl/asn1t.h +1 -11
- data/third_party/boringssl/include/openssl/base.h +145 -3
- data/third_party/boringssl/include/openssl/base64.h +20 -17
- data/third_party/boringssl/include/openssl/bio.h +59 -34
- data/third_party/boringssl/include/openssl/bn.h +118 -51
- data/third_party/boringssl/include/openssl/buf.h +15 -0
- data/third_party/boringssl/include/openssl/bytestring.h +52 -4
- data/third_party/boringssl/include/openssl/chacha.h +2 -2
- data/third_party/boringssl/include/openssl/cipher.h +18 -1
- data/third_party/boringssl/include/openssl/cmac.h +11 -0
- data/third_party/boringssl/include/openssl/conf.h +13 -2
- data/third_party/boringssl/include/openssl/cpu.h +20 -23
- data/third_party/boringssl/include/openssl/crypto.h +22 -1
- data/third_party/boringssl/include/openssl/curve25519.h +96 -4
- data/third_party/boringssl/include/openssl/dh.h +71 -16
- data/third_party/boringssl/include/openssl/digest.h +38 -11
- data/third_party/boringssl/include/openssl/dsa.h +40 -4
- data/third_party/boringssl/include/openssl/ec.h +44 -18
- data/third_party/boringssl/include/openssl/ec_key.h +27 -6
- data/third_party/boringssl/include/openssl/ecdsa.h +11 -0
- data/third_party/boringssl/include/openssl/engine.h +11 -0
- data/third_party/boringssl/include/openssl/evp.h +52 -88
- data/third_party/boringssl/include/openssl/hkdf.h +24 -4
- data/third_party/boringssl/include/openssl/hmac.h +20 -6
- data/third_party/boringssl/include/openssl/md4.h +4 -0
- data/third_party/boringssl/include/openssl/mem.h +19 -0
- data/third_party/boringssl/include/openssl/newhope.h +158 -0
- data/third_party/boringssl/include/openssl/nid.h +4166 -0
- data/third_party/boringssl/include/openssl/obj.h +31 -3
- data/third_party/boringssl/include/openssl/obj_mac.h +17 -4143
- data/third_party/boringssl/include/openssl/{opensslfeatures.h → opensslconf.h} +3 -3
- data/third_party/boringssl/include/openssl/pem.h +5 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +12 -0
- data/third_party/boringssl/include/openssl/rand.h +6 -0
- data/third_party/boringssl/include/openssl/rc4.h +6 -0
- data/third_party/boringssl/{crypto/dh/internal.h → include/openssl/ripemd.h} +38 -11
- data/third_party/boringssl/include/openssl/rsa.h +127 -65
- data/third_party/boringssl/include/openssl/sha.h +14 -10
- data/third_party/boringssl/include/openssl/ssl.h +561 -275
- data/third_party/boringssl/include/openssl/ssl3.h +18 -25
- data/third_party/boringssl/include/openssl/stack.h +2 -4
- data/third_party/boringssl/include/openssl/stack_macros.h +321 -353
- data/third_party/boringssl/include/openssl/thread.h +31 -13
- data/third_party/boringssl/include/openssl/time_support.h +1 -0
- data/third_party/boringssl/include/openssl/tls1.h +37 -33
- data/third_party/boringssl/include/openssl/x509.h +69 -26
- data/third_party/boringssl/include/openssl/x509_vfy.h +12 -10
- data/third_party/boringssl/include/openssl/x509v3.h +23 -2
- data/third_party/boringssl/ssl/custom_extensions.c +3 -5
- data/third_party/boringssl/ssl/d1_both.c +463 -499
- data/third_party/boringssl/ssl/d1_lib.c +38 -109
- data/third_party/boringssl/ssl/d1_pkt.c +173 -334
- data/third_party/boringssl/ssl/d1_srtp.c +20 -18
- data/third_party/boringssl/ssl/{d1_meth.c → dtls_method.c} +88 -15
- data/third_party/boringssl/ssl/dtls_record.c +27 -26
- data/third_party/boringssl/ssl/{s3_clnt.c → handshake_client.c} +816 -904
- data/third_party/boringssl/ssl/handshake_server.c +1932 -0
- data/third_party/boringssl/ssl/internal.h +712 -439
- data/third_party/boringssl/ssl/s3_both.c +445 -257
- data/third_party/boringssl/ssl/s3_enc.c +53 -36
- data/third_party/boringssl/ssl/s3_lib.c +23 -268
- data/third_party/boringssl/ssl/s3_pkt.c +168 -364
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +46 -17
- data/third_party/boringssl/ssl/ssl_asn1.c +56 -26
- data/third_party/boringssl/ssl/ssl_buffer.c +16 -24
- data/third_party/boringssl/ssl/ssl_cert.c +324 -49
- data/third_party/boringssl/ssl/ssl_cipher.c +205 -150
- data/third_party/boringssl/ssl/ssl_ecdh.c +287 -51
- data/third_party/boringssl/ssl/ssl_file.c +21 -68
- data/third_party/boringssl/ssl/ssl_lib.c +881 -510
- data/third_party/boringssl/ssl/ssl_rsa.c +404 -34
- data/third_party/boringssl/ssl/ssl_session.c +324 -103
- data/third_party/boringssl/ssl/ssl_stat.c +6 -88
- data/third_party/boringssl/ssl/t1_enc.c +23 -39
- data/third_party/boringssl/ssl/t1_lib.c +1120 -622
- data/third_party/boringssl/ssl/tls13_both.c +440 -0
- data/third_party/boringssl/ssl/tls13_client.c +682 -0
- data/third_party/boringssl/ssl/tls13_enc.c +391 -0
- data/third_party/boringssl/ssl/tls13_server.c +672 -0
- data/third_party/boringssl/ssl/{s3_meth.c → tls_method.c} +100 -21
- data/third_party/boringssl/ssl/tls_record.c +159 -77
- data/third_party/nanopb/pb.h +60 -28
- data/third_party/nanopb/pb_decode.c +120 -92
- data/third_party/nanopb/pb_decode.h +3 -3
- data/third_party/nanopb/pb_encode.c +73 -67
- data/third_party/nanopb/pb_encode.h +4 -4
- metadata +155 -89
- data/include/grpc/impl/codegen/byte_buffer.h +0 -122
- data/include/grpc/impl/codegen/log.h +0 -118
- data/include/grpc/impl/codegen/time.h +0 -130
- data/src/core/ext/client_config/client_channel.c +0 -593
- data/src/core/ext/client_config/subchannel_call_holder.c +0 -272
- data/src/core/ext/client_config/subchannel_call_holder.h +0 -99
- data/src/core/lib/iomgr/ev_poll_and_epoll_posix.c +0 -2046
- data/src/core/lib/iomgr/workqueue_posix.c +0 -151
- data/src/core/lib/security/transport/handshake.c +0 -368
- data/third_party/boringssl/crypto/asn1/a_bytes.c +0 -308
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +0 -477
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +0 -251
- data/third_party/boringssl/crypto/asn1/t_pkey.c +0 -110
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +0 -596
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +0 -328
- data/third_party/boringssl/crypto/directory.h +0 -66
- data/third_party/boringssl/crypto/directory_posix.c +0 -108
- data/third_party/boringssl/crypto/directory_win.c +0 -144
- data/third_party/boringssl/crypto/test/scoped_types.h +0 -140
- data/third_party/boringssl/include/openssl/pqueue.h +0 -146
- data/third_party/boringssl/ssl/d1_clnt.c +0 -561
- data/third_party/boringssl/ssl/d1_srvr.c +0 -476
- data/third_party/boringssl/ssl/pqueue/pqueue.c +0 -197
- data/third_party/boringssl/ssl/s3_srvr.c +0 -2272
- data/third_party/boringssl/ssl/test/async_bio.h +0 -45
- data/third_party/boringssl/ssl/test/packeted_bio.h +0 -44
- data/third_party/boringssl/ssl/test/test_config.h +0 -110
@@ -0,0 +1,78 @@
|
|
1
|
+
/*
|
2
|
+
*
|
3
|
+
* Copyright 2016, Google Inc.
|
4
|
+
* All rights reserved.
|
5
|
+
*
|
6
|
+
* Redistribution and use in source and binary forms, with or without
|
7
|
+
* modification, are permitted provided that the following conditions are
|
8
|
+
* met:
|
9
|
+
*
|
10
|
+
* * Redistributions of source code must retain the above copyright
|
11
|
+
* notice, this list of conditions and the following disclaimer.
|
12
|
+
* * Redistributions in binary form must reproduce the above
|
13
|
+
* copyright notice, this list of conditions and the following disclaimer
|
14
|
+
* in the documentation and/or other materials provided with the
|
15
|
+
* distribution.
|
16
|
+
* * Neither the name of Google Inc. nor the names of its
|
17
|
+
* contributors may be used to endorse or promote products derived from
|
18
|
+
* this software without specific prior written permission.
|
19
|
+
*
|
20
|
+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
21
|
+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
22
|
+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
23
|
+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
24
|
+
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
25
|
+
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
26
|
+
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
27
|
+
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
28
|
+
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
29
|
+
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
30
|
+
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
|
+
*
|
32
|
+
*/
|
33
|
+
|
34
|
+
#ifndef GRPC_CORE_LIB_SLICE_PERCENT_ENCODING_H
|
35
|
+
#define GRPC_CORE_LIB_SLICE_PERCENT_ENCODING_H
|
36
|
+
|
37
|
+
/* Percent encoding and decoding of slices.
|
38
|
+
Transforms arbitrary strings into safe-for-transmission strings by using
|
39
|
+
variants of percent encoding (RFC 3986).
|
40
|
+
Two major variants are supplied: one that strictly matches URL encoding,
|
41
|
+
and another which applies percent encoding only to non-http2 header
|
42
|
+
bytes (the 'compatible' variant) */
|
43
|
+
|
44
|
+
#include <stdbool.h>
|
45
|
+
|
46
|
+
#include <grpc/slice.h>
|
47
|
+
|
48
|
+
/* URL percent encoding spec bitfield (usabel as 'unreserved_bytes' in
|
49
|
+
grpc_percent_encode_slice, grpc_strict_percent_decode_slice).
|
50
|
+
Flags [A-Za-z0-9-_.~] as unreserved bytes for the percent encoding routines
|
51
|
+
*/
|
52
|
+
extern const uint8_t grpc_url_percent_encoding_unreserved_bytes[256 / 8];
|
53
|
+
/* URL percent encoding spec bitfield (usabel as 'unreserved_bytes' in
|
54
|
+
grpc_percent_encode_slice, grpc_strict_percent_decode_slice).
|
55
|
+
Flags ascii7 non-control characters excluding '%' as unreserved bytes for the
|
56
|
+
percent encoding routines */
|
57
|
+
extern const uint8_t grpc_compatible_percent_encoding_unreserved_bytes[256 / 8];
|
58
|
+
|
59
|
+
/* Percent-encode a slice, returning the new slice (this cannot fail):
|
60
|
+
unreserved_bytes is a bitfield indicating which bytes are considered
|
61
|
+
unreserved and thus do not need percent encoding */
|
62
|
+
grpc_slice grpc_percent_encode_slice(grpc_slice slice,
|
63
|
+
const uint8_t *unreserved_bytes);
|
64
|
+
/* Percent-decode a slice, strictly.
|
65
|
+
If the input is legal (contains no unreserved bytes, and legal % encodings),
|
66
|
+
returns true and sets *slice_out to the decoded slice.
|
67
|
+
If the input is not legal, returns false and leaves *slice_out untouched.
|
68
|
+
unreserved_bytes is a bitfield indicating which bytes are considered
|
69
|
+
unreserved and thus do not need percent encoding */
|
70
|
+
bool grpc_strict_percent_decode_slice(grpc_slice slice_in,
|
71
|
+
const uint8_t *unreserved_bytes,
|
72
|
+
grpc_slice *slice_out);
|
73
|
+
/* Percent-decode a slice, permissively.
|
74
|
+
If a % triplet can not be decoded, pass it through verbatim.
|
75
|
+
This cannot fail. */
|
76
|
+
grpc_slice grpc_permissive_percent_decode_slice(grpc_slice slice_in);
|
77
|
+
|
78
|
+
#endif /* GRPC_CORE_LIB_SLICE_PERCENT_ENCODING_H */
|
@@ -31,51 +31,67 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
+
#include "src/core/lib/slice/slice_internal.h"
|
35
|
+
|
36
|
+
#include <grpc/slice.h>
|
34
37
|
#include <grpc/support/alloc.h>
|
35
38
|
#include <grpc/support/log.h>
|
36
|
-
#include <grpc/support/slice.h>
|
37
39
|
|
38
40
|
#include <string.h>
|
39
41
|
|
40
|
-
|
41
|
-
|
42
|
+
#include "src/core/lib/iomgr/exec_ctx.h"
|
43
|
+
|
44
|
+
grpc_slice gpr_empty_slice(void) {
|
45
|
+
grpc_slice out;
|
42
46
|
out.refcount = 0;
|
43
47
|
out.data.inlined.length = 0;
|
44
48
|
return out;
|
45
49
|
}
|
46
50
|
|
47
|
-
|
51
|
+
grpc_slice grpc_slice_ref_internal(grpc_slice slice) {
|
48
52
|
if (slice.refcount) {
|
49
53
|
slice.refcount->ref(slice.refcount);
|
50
54
|
}
|
51
55
|
return slice;
|
52
56
|
}
|
53
57
|
|
54
|
-
void
|
58
|
+
void grpc_slice_unref_internal(grpc_exec_ctx *exec_ctx, grpc_slice slice) {
|
55
59
|
if (slice.refcount) {
|
56
|
-
slice.refcount->unref(slice.refcount);
|
60
|
+
slice.refcount->unref(exec_ctx, slice.refcount);
|
57
61
|
}
|
58
62
|
}
|
59
63
|
|
60
|
-
/*
|
64
|
+
/* Public API */
|
65
|
+
grpc_slice grpc_slice_ref(grpc_slice slice) {
|
66
|
+
return grpc_slice_ref_internal(slice);
|
67
|
+
}
|
68
|
+
|
69
|
+
/* Public API */
|
70
|
+
void grpc_slice_unref(grpc_slice slice) {
|
71
|
+
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
72
|
+
grpc_slice_unref_internal(&exec_ctx, slice);
|
73
|
+
grpc_exec_ctx_finish(&exec_ctx);
|
74
|
+
}
|
75
|
+
|
76
|
+
/* grpc_slice_from_static_string support structure - a refcount that does
|
61
77
|
nothing */
|
62
|
-
static void
|
78
|
+
static void noop_ref(void *unused) {}
|
79
|
+
static void noop_unref(grpc_exec_ctx *exec_ctx, void *unused) {}
|
63
80
|
|
64
|
-
static
|
65
|
-
noop_ref_or_unref};
|
81
|
+
static grpc_slice_refcount noop_refcount = {noop_ref, noop_unref};
|
66
82
|
|
67
|
-
|
68
|
-
|
83
|
+
grpc_slice grpc_slice_from_static_string(const char *s) {
|
84
|
+
grpc_slice slice;
|
69
85
|
slice.refcount = &noop_refcount;
|
70
86
|
slice.data.refcounted.bytes = (uint8_t *)s;
|
71
87
|
slice.data.refcounted.length = strlen(s);
|
72
88
|
return slice;
|
73
89
|
}
|
74
90
|
|
75
|
-
/*
|
91
|
+
/* grpc_slice_new support structures - we create a refcount object extended
|
76
92
|
with the user provided data pointer & destroy function */
|
77
93
|
typedef struct new_slice_refcount {
|
78
|
-
|
94
|
+
grpc_slice_refcount rc;
|
79
95
|
gpr_refcount refs;
|
80
96
|
void (*user_destroy)(void *);
|
81
97
|
void *user_data;
|
@@ -86,7 +102,7 @@ static void new_slice_ref(void *p) {
|
|
86
102
|
gpr_ref(&r->refs);
|
87
103
|
}
|
88
104
|
|
89
|
-
static void new_slice_unref(void *p) {
|
105
|
+
static void new_slice_unref(grpc_exec_ctx *exec_ctx, void *p) {
|
90
106
|
new_slice_refcount *r = p;
|
91
107
|
if (gpr_unref(&r->refs)) {
|
92
108
|
r->user_destroy(r->user_data);
|
@@ -94,14 +110,16 @@ static void new_slice_unref(void *p) {
|
|
94
110
|
}
|
95
111
|
}
|
96
112
|
|
97
|
-
|
98
|
-
|
113
|
+
grpc_slice grpc_slice_new_with_user_data(void *p, size_t len,
|
114
|
+
void (*destroy)(void *),
|
115
|
+
void *user_data) {
|
116
|
+
grpc_slice slice;
|
99
117
|
new_slice_refcount *rc = gpr_malloc(sizeof(new_slice_refcount));
|
100
118
|
gpr_ref_init(&rc->refs, 1);
|
101
119
|
rc->rc.ref = new_slice_ref;
|
102
120
|
rc->rc.unref = new_slice_unref;
|
103
121
|
rc->user_destroy = destroy;
|
104
|
-
rc->user_data =
|
122
|
+
rc->user_data = user_data;
|
105
123
|
|
106
124
|
slice.refcount = &rc->rc;
|
107
125
|
slice.data.refcounted.bytes = p;
|
@@ -109,10 +127,15 @@ gpr_slice gpr_slice_new(void *p, size_t len, void (*destroy)(void *)) {
|
|
109
127
|
return slice;
|
110
128
|
}
|
111
129
|
|
112
|
-
|
130
|
+
grpc_slice grpc_slice_new(void *p, size_t len, void (*destroy)(void *)) {
|
131
|
+
/* Pass "p" to *destroy when the slice is no longer needed. */
|
132
|
+
return grpc_slice_new_with_user_data(p, len, destroy, p);
|
133
|
+
}
|
134
|
+
|
135
|
+
/* grpc_slice_new_with_len support structures - we create a refcount object
|
113
136
|
extended with the user provided data pointer & destroy function */
|
114
137
|
typedef struct new_with_len_slice_refcount {
|
115
|
-
|
138
|
+
grpc_slice_refcount rc;
|
116
139
|
gpr_refcount refs;
|
117
140
|
void *user_data;
|
118
141
|
size_t user_length;
|
@@ -124,7 +147,7 @@ static void new_with_len_ref(void *p) {
|
|
124
147
|
gpr_ref(&r->refs);
|
125
148
|
}
|
126
149
|
|
127
|
-
static void new_with_len_unref(void *p) {
|
150
|
+
static void new_with_len_unref(grpc_exec_ctx *exec_ctx, void *p) {
|
128
151
|
new_with_len_slice_refcount *r = p;
|
129
152
|
if (gpr_unref(&r->refs)) {
|
130
153
|
r->user_destroy(r->user_data, r->user_length);
|
@@ -132,9 +155,9 @@ static void new_with_len_unref(void *p) {
|
|
132
155
|
}
|
133
156
|
}
|
134
157
|
|
135
|
-
|
136
|
-
|
137
|
-
|
158
|
+
grpc_slice grpc_slice_new_with_len(void *p, size_t len,
|
159
|
+
void (*destroy)(void *, size_t)) {
|
160
|
+
grpc_slice slice;
|
138
161
|
new_with_len_slice_refcount *rc =
|
139
162
|
gpr_malloc(sizeof(new_with_len_slice_refcount));
|
140
163
|
gpr_ref_init(&rc->refs, 1);
|
@@ -150,18 +173,18 @@ gpr_slice gpr_slice_new_with_len(void *p, size_t len,
|
|
150
173
|
return slice;
|
151
174
|
}
|
152
175
|
|
153
|
-
|
154
|
-
|
155
|
-
memcpy(
|
176
|
+
grpc_slice grpc_slice_from_copied_buffer(const char *source, size_t length) {
|
177
|
+
grpc_slice slice = grpc_slice_malloc(length);
|
178
|
+
memcpy(GRPC_SLICE_START_PTR(slice), source, length);
|
156
179
|
return slice;
|
157
180
|
}
|
158
181
|
|
159
|
-
|
160
|
-
return
|
182
|
+
grpc_slice grpc_slice_from_copied_string(const char *source) {
|
183
|
+
return grpc_slice_from_copied_buffer(source, strlen(source));
|
161
184
|
}
|
162
185
|
|
163
186
|
typedef struct {
|
164
|
-
|
187
|
+
grpc_slice_refcount base;
|
165
188
|
gpr_refcount refs;
|
166
189
|
} malloc_refcount;
|
167
190
|
|
@@ -170,15 +193,15 @@ static void malloc_ref(void *p) {
|
|
170
193
|
gpr_ref(&r->refs);
|
171
194
|
}
|
172
195
|
|
173
|
-
static void malloc_unref(void *p) {
|
196
|
+
static void malloc_unref(grpc_exec_ctx *exec_ctx, void *p) {
|
174
197
|
malloc_refcount *r = p;
|
175
198
|
if (gpr_unref(&r->refs)) {
|
176
199
|
gpr_free(r);
|
177
200
|
}
|
178
201
|
}
|
179
202
|
|
180
|
-
|
181
|
-
|
203
|
+
grpc_slice grpc_slice_malloc(size_t length) {
|
204
|
+
grpc_slice slice;
|
182
205
|
|
183
206
|
if (length > sizeof(slice.data.inlined.bytes)) {
|
184
207
|
/* Memory layout used by the slice created here:
|
@@ -214,8 +237,8 @@ gpr_slice gpr_slice_malloc(size_t length) {
|
|
214
237
|
return slice;
|
215
238
|
}
|
216
239
|
|
217
|
-
|
218
|
-
|
240
|
+
grpc_slice grpc_slice_sub_no_ref(grpc_slice source, size_t begin, size_t end) {
|
241
|
+
grpc_slice subset;
|
219
242
|
|
220
243
|
GPR_ASSERT(end >= begin);
|
221
244
|
|
@@ -239,24 +262,24 @@ gpr_slice gpr_slice_sub_no_ref(gpr_slice source, size_t begin, size_t end) {
|
|
239
262
|
return subset;
|
240
263
|
}
|
241
264
|
|
242
|
-
|
243
|
-
|
265
|
+
grpc_slice grpc_slice_sub(grpc_slice source, size_t begin, size_t end) {
|
266
|
+
grpc_slice subset;
|
244
267
|
|
245
268
|
if (end - begin <= sizeof(subset.data.inlined.bytes)) {
|
246
269
|
subset.refcount = NULL;
|
247
270
|
subset.data.inlined.length = (uint8_t)(end - begin);
|
248
|
-
memcpy(subset.data.inlined.bytes,
|
271
|
+
memcpy(subset.data.inlined.bytes, GRPC_SLICE_START_PTR(source) + begin,
|
249
272
|
end - begin);
|
250
273
|
} else {
|
251
|
-
subset =
|
274
|
+
subset = grpc_slice_sub_no_ref(source, begin, end);
|
252
275
|
/* Bump the refcount */
|
253
276
|
subset.refcount->ref(subset.refcount);
|
254
277
|
}
|
255
278
|
return subset;
|
256
279
|
}
|
257
280
|
|
258
|
-
|
259
|
-
|
281
|
+
grpc_slice grpc_slice_split_tail(grpc_slice *source, size_t split) {
|
282
|
+
grpc_slice tail;
|
260
283
|
|
261
284
|
if (source->refcount == NULL) {
|
262
285
|
/* inlined data, copy it out */
|
@@ -290,8 +313,8 @@ gpr_slice gpr_slice_split_tail(gpr_slice *source, size_t split) {
|
|
290
313
|
return tail;
|
291
314
|
}
|
292
315
|
|
293
|
-
|
294
|
-
|
316
|
+
grpc_slice grpc_slice_split_head(grpc_slice *source, size_t split) {
|
317
|
+
grpc_slice head;
|
295
318
|
|
296
319
|
if (source->refcount == NULL) {
|
297
320
|
GPR_ASSERT(source->data.inlined.length >= split);
|
@@ -328,16 +351,24 @@ gpr_slice gpr_slice_split_head(gpr_slice *source, size_t split) {
|
|
328
351
|
return head;
|
329
352
|
}
|
330
353
|
|
331
|
-
int
|
332
|
-
int d = (int)(
|
354
|
+
int grpc_slice_cmp(grpc_slice a, grpc_slice b) {
|
355
|
+
int d = (int)(GRPC_SLICE_LENGTH(a) - GRPC_SLICE_LENGTH(b));
|
333
356
|
if (d != 0) return d;
|
334
|
-
return memcmp(
|
335
|
-
|
357
|
+
return memcmp(GRPC_SLICE_START_PTR(a), GRPC_SLICE_START_PTR(b),
|
358
|
+
GRPC_SLICE_LENGTH(a));
|
336
359
|
}
|
337
360
|
|
338
|
-
int
|
361
|
+
int grpc_slice_str_cmp(grpc_slice a, const char *b) {
|
339
362
|
size_t b_length = strlen(b);
|
340
|
-
int d = (int)(
|
363
|
+
int d = (int)(GRPC_SLICE_LENGTH(a) - b_length);
|
341
364
|
if (d != 0) return d;
|
342
|
-
return memcmp(
|
365
|
+
return memcmp(GRPC_SLICE_START_PTR(a), b, b_length);
|
366
|
+
}
|
367
|
+
|
368
|
+
int grpc_slice_is_equivalent(grpc_slice a, grpc_slice b) {
|
369
|
+
if (a.refcount == NULL || b.refcount == NULL) {
|
370
|
+
return grpc_slice_cmp(a, b) == 0;
|
371
|
+
}
|
372
|
+
return a.data.refcounted.length == b.data.refcounted.length &&
|
373
|
+
a.data.refcounted.bytes == b.data.refcounted.bytes;
|
343
374
|
}
|
@@ -31,8 +31,8 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
+
#include <grpc/slice_buffer.h>
|
34
35
|
#include <grpc/support/port_platform.h>
|
35
|
-
#include <grpc/support/slice_buffer.h>
|
36
36
|
|
37
37
|
#include <string.h>
|
38
38
|
|
@@ -40,38 +40,47 @@
|
|
40
40
|
#include <grpc/support/log.h>
|
41
41
|
#include <grpc/support/useful.h>
|
42
42
|
|
43
|
+
#include "src/core/lib/slice/slice_internal.h"
|
44
|
+
|
43
45
|
/* grow a buffer; requires GRPC_SLICE_BUFFER_INLINE_ELEMENTS > 1 */
|
44
46
|
#define GROW(x) (3 * (x) / 2)
|
45
47
|
|
46
|
-
static void maybe_embiggen(
|
48
|
+
static void maybe_embiggen(grpc_slice_buffer *sb) {
|
47
49
|
if (sb->count == sb->capacity) {
|
48
50
|
sb->capacity = GROW(sb->capacity);
|
49
51
|
GPR_ASSERT(sb->capacity > sb->count);
|
50
52
|
if (sb->slices == sb->inlined) {
|
51
|
-
sb->slices = gpr_malloc(sb->capacity * sizeof(
|
52
|
-
memcpy(sb->slices, sb->inlined, sb->count * sizeof(
|
53
|
+
sb->slices = gpr_malloc(sb->capacity * sizeof(grpc_slice));
|
54
|
+
memcpy(sb->slices, sb->inlined, sb->count * sizeof(grpc_slice));
|
53
55
|
} else {
|
54
|
-
sb->slices = gpr_realloc(sb->slices, sb->capacity * sizeof(
|
56
|
+
sb->slices = gpr_realloc(sb->slices, sb->capacity * sizeof(grpc_slice));
|
55
57
|
}
|
56
58
|
}
|
57
59
|
}
|
58
60
|
|
59
|
-
void
|
61
|
+
void grpc_slice_buffer_init(grpc_slice_buffer *sb) {
|
60
62
|
sb->count = 0;
|
61
63
|
sb->length = 0;
|
62
64
|
sb->capacity = GRPC_SLICE_BUFFER_INLINE_ELEMENTS;
|
63
65
|
sb->slices = sb->inlined;
|
64
66
|
}
|
65
67
|
|
66
|
-
void
|
67
|
-
|
68
|
+
void grpc_slice_buffer_destroy_internal(grpc_exec_ctx *exec_ctx,
|
69
|
+
grpc_slice_buffer *sb) {
|
70
|
+
grpc_slice_buffer_reset_and_unref_internal(exec_ctx, sb);
|
68
71
|
if (sb->slices != sb->inlined) {
|
69
72
|
gpr_free(sb->slices);
|
70
73
|
}
|
71
74
|
}
|
72
75
|
|
73
|
-
|
74
|
-
|
76
|
+
void grpc_slice_buffer_destroy(grpc_slice_buffer *sb) {
|
77
|
+
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
78
|
+
grpc_slice_buffer_destroy_internal(&exec_ctx, sb);
|
79
|
+
grpc_exec_ctx_finish(&exec_ctx);
|
80
|
+
}
|
81
|
+
|
82
|
+
uint8_t *grpc_slice_buffer_tiny_add(grpc_slice_buffer *sb, size_t n) {
|
83
|
+
grpc_slice *back;
|
75
84
|
uint8_t *out;
|
76
85
|
|
77
86
|
sb->length += n;
|
@@ -94,16 +103,16 @@ add_new:
|
|
94
103
|
return back->data.inlined.bytes;
|
95
104
|
}
|
96
105
|
|
97
|
-
size_t
|
106
|
+
size_t grpc_slice_buffer_add_indexed(grpc_slice_buffer *sb, grpc_slice s) {
|
98
107
|
size_t out = sb->count;
|
99
108
|
maybe_embiggen(sb);
|
100
109
|
sb->slices[out] = s;
|
101
|
-
sb->length +=
|
110
|
+
sb->length += GRPC_SLICE_LENGTH(s);
|
102
111
|
sb->count = out + 1;
|
103
112
|
return out;
|
104
113
|
}
|
105
114
|
|
106
|
-
void
|
115
|
+
void grpc_slice_buffer_add(grpc_slice_buffer *sb, grpc_slice s) {
|
107
116
|
size_t n = sb->count;
|
108
117
|
/* if both the last slice in the slice buffer and the slice being added
|
109
118
|
are inlined (that is, that they carry their data inside the slice data
|
@@ -111,19 +120,20 @@ void gpr_slice_buffer_add(gpr_slice_buffer *sb, gpr_slice s) {
|
|
111
120
|
into the back slice, preventing many small slices being passed into
|
112
121
|
writes */
|
113
122
|
if (!s.refcount && n) {
|
114
|
-
|
115
|
-
if (!back->refcount &&
|
123
|
+
grpc_slice *back = &sb->slices[n - 1];
|
124
|
+
if (!back->refcount &&
|
125
|
+
back->data.inlined.length < GRPC_SLICE_INLINED_SIZE) {
|
116
126
|
if (s.data.inlined.length + back->data.inlined.length <=
|
117
|
-
|
127
|
+
GRPC_SLICE_INLINED_SIZE) {
|
118
128
|
memcpy(back->data.inlined.bytes + back->data.inlined.length,
|
119
129
|
s.data.inlined.bytes, s.data.inlined.length);
|
120
130
|
back->data.inlined.length =
|
121
131
|
(uint8_t)(back->data.inlined.length + s.data.inlined.length);
|
122
132
|
} else {
|
123
|
-
size_t cp1 =
|
133
|
+
size_t cp1 = GRPC_SLICE_INLINED_SIZE - back->data.inlined.length;
|
124
134
|
memcpy(back->data.inlined.bytes + back->data.inlined.length,
|
125
135
|
s.data.inlined.bytes, cp1);
|
126
|
-
back->data.inlined.length =
|
136
|
+
back->data.inlined.length = GRPC_SLICE_INLINED_SIZE;
|
127
137
|
maybe_embiggen(sb);
|
128
138
|
back = &sb->slices[n];
|
129
139
|
sb->count = n + 1;
|
@@ -136,35 +146,42 @@ void gpr_slice_buffer_add(gpr_slice_buffer *sb, gpr_slice s) {
|
|
136
146
|
return; /* early out */
|
137
147
|
}
|
138
148
|
}
|
139
|
-
|
149
|
+
grpc_slice_buffer_add_indexed(sb, s);
|
140
150
|
}
|
141
151
|
|
142
|
-
void
|
152
|
+
void grpc_slice_buffer_addn(grpc_slice_buffer *sb, grpc_slice *s, size_t n) {
|
143
153
|
size_t i;
|
144
154
|
for (i = 0; i < n; i++) {
|
145
|
-
|
155
|
+
grpc_slice_buffer_add(sb, s[i]);
|
146
156
|
}
|
147
157
|
}
|
148
158
|
|
149
|
-
void
|
159
|
+
void grpc_slice_buffer_pop(grpc_slice_buffer *sb) {
|
150
160
|
if (sb->count != 0) {
|
151
161
|
size_t count = --sb->count;
|
152
|
-
sb->length -=
|
162
|
+
sb->length -= GRPC_SLICE_LENGTH(sb->slices[count]);
|
153
163
|
}
|
154
164
|
}
|
155
165
|
|
156
|
-
void
|
166
|
+
void grpc_slice_buffer_reset_and_unref_internal(grpc_exec_ctx *exec_ctx,
|
167
|
+
grpc_slice_buffer *sb) {
|
157
168
|
size_t i;
|
158
169
|
|
159
170
|
for (i = 0; i < sb->count; i++) {
|
160
|
-
|
171
|
+
grpc_slice_unref_internal(exec_ctx, sb->slices[i]);
|
161
172
|
}
|
162
173
|
|
163
174
|
sb->count = 0;
|
164
175
|
sb->length = 0;
|
165
176
|
}
|
166
177
|
|
167
|
-
void
|
178
|
+
void grpc_slice_buffer_reset_and_unref(grpc_slice_buffer *sb) {
|
179
|
+
grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
|
180
|
+
grpc_slice_buffer_reset_and_unref_internal(&exec_ctx, sb);
|
181
|
+
grpc_exec_ctx_finish(&exec_ctx);
|
182
|
+
}
|
183
|
+
|
184
|
+
void grpc_slice_buffer_swap(grpc_slice_buffer *a, grpc_slice_buffer *b) {
|
168
185
|
GPR_SWAP(size_t, a->count, b->count);
|
169
186
|
GPR_SWAP(size_t, a->capacity, b->capacity);
|
170
187
|
GPR_SWAP(size_t, a->length, b->length);
|
@@ -172,111 +189,112 @@ void gpr_slice_buffer_swap(gpr_slice_buffer *a, gpr_slice_buffer *b) {
|
|
172
189
|
if (a->slices == a->inlined) {
|
173
190
|
if (b->slices == b->inlined) {
|
174
191
|
/* swap contents of inlined buffer */
|
175
|
-
|
176
|
-
memcpy(temp, a->slices, b->count * sizeof(
|
177
|
-
memcpy(a->slices, b->slices, a->count * sizeof(
|
178
|
-
memcpy(b->slices, temp, b->count * sizeof(
|
192
|
+
grpc_slice temp[GRPC_SLICE_BUFFER_INLINE_ELEMENTS];
|
193
|
+
memcpy(temp, a->slices, b->count * sizeof(grpc_slice));
|
194
|
+
memcpy(a->slices, b->slices, a->count * sizeof(grpc_slice));
|
195
|
+
memcpy(b->slices, temp, b->count * sizeof(grpc_slice));
|
179
196
|
} else {
|
180
197
|
/* a is inlined, b is not - copy a inlined into b, fix pointers */
|
181
198
|
a->slices = b->slices;
|
182
199
|
b->slices = b->inlined;
|
183
|
-
memcpy(b->slices, a->inlined, b->count * sizeof(
|
200
|
+
memcpy(b->slices, a->inlined, b->count * sizeof(grpc_slice));
|
184
201
|
}
|
185
202
|
} else if (b->slices == b->inlined) {
|
186
203
|
/* b is inlined, a is not - copy b inlined int a, fix pointers */
|
187
204
|
b->slices = a->slices;
|
188
205
|
a->slices = a->inlined;
|
189
|
-
memcpy(a->slices, b->inlined, a->count * sizeof(
|
206
|
+
memcpy(a->slices, b->inlined, a->count * sizeof(grpc_slice));
|
190
207
|
} else {
|
191
208
|
/* no inlining: easy swap */
|
192
|
-
GPR_SWAP(
|
209
|
+
GPR_SWAP(grpc_slice *, a->slices, b->slices);
|
193
210
|
}
|
194
211
|
}
|
195
212
|
|
196
|
-
void
|
213
|
+
void grpc_slice_buffer_move_into(grpc_slice_buffer *src,
|
214
|
+
grpc_slice_buffer *dst) {
|
197
215
|
/* anything to move? */
|
198
216
|
if (src->count == 0) {
|
199
217
|
return;
|
200
218
|
}
|
201
219
|
/* anything in dst? */
|
202
220
|
if (dst->count == 0) {
|
203
|
-
|
221
|
+
grpc_slice_buffer_swap(src, dst);
|
204
222
|
return;
|
205
223
|
}
|
206
224
|
/* both buffers have data - copy, and reset src */
|
207
|
-
|
225
|
+
grpc_slice_buffer_addn(dst, src->slices, src->count);
|
208
226
|
src->count = 0;
|
209
227
|
src->length = 0;
|
210
228
|
}
|
211
229
|
|
212
|
-
void
|
213
|
-
|
230
|
+
void grpc_slice_buffer_move_first(grpc_slice_buffer *src, size_t n,
|
231
|
+
grpc_slice_buffer *dst) {
|
214
232
|
size_t src_idx;
|
215
233
|
size_t output_len = dst->length + n;
|
216
234
|
size_t new_input_len = src->length - n;
|
217
235
|
GPR_ASSERT(src->length >= n);
|
218
236
|
if (src->length == n) {
|
219
|
-
|
237
|
+
grpc_slice_buffer_move_into(src, dst);
|
220
238
|
return;
|
221
239
|
}
|
222
240
|
src_idx = 0;
|
223
241
|
while (src_idx < src->capacity) {
|
224
|
-
|
225
|
-
size_t slice_len =
|
242
|
+
grpc_slice slice = src->slices[src_idx];
|
243
|
+
size_t slice_len = GRPC_SLICE_LENGTH(slice);
|
226
244
|
if (n > slice_len) {
|
227
|
-
|
245
|
+
grpc_slice_buffer_add(dst, slice);
|
228
246
|
n -= slice_len;
|
229
247
|
src_idx++;
|
230
248
|
} else if (n == slice_len) {
|
231
|
-
|
249
|
+
grpc_slice_buffer_add(dst, slice);
|
232
250
|
src_idx++;
|
233
251
|
break;
|
234
252
|
} else { /* n < slice_len */
|
235
|
-
src->slices[src_idx] =
|
236
|
-
GPR_ASSERT(
|
237
|
-
GPR_ASSERT(
|
238
|
-
|
253
|
+
src->slices[src_idx] = grpc_slice_split_tail(&slice, n);
|
254
|
+
GPR_ASSERT(GRPC_SLICE_LENGTH(slice) == n);
|
255
|
+
GPR_ASSERT(GRPC_SLICE_LENGTH(src->slices[src_idx]) == slice_len - n);
|
256
|
+
grpc_slice_buffer_add(dst, slice);
|
239
257
|
break;
|
240
258
|
}
|
241
259
|
}
|
242
260
|
GPR_ASSERT(dst->length == output_len);
|
243
261
|
memmove(src->slices, src->slices + src_idx,
|
244
|
-
sizeof(
|
262
|
+
sizeof(grpc_slice) * (src->count - src_idx));
|
245
263
|
src->count -= src_idx;
|
246
264
|
src->length = new_input_len;
|
247
265
|
GPR_ASSERT(src->count > 0);
|
248
266
|
}
|
249
267
|
|
250
|
-
void
|
251
|
-
|
268
|
+
void grpc_slice_buffer_trim_end(grpc_slice_buffer *sb, size_t n,
|
269
|
+
grpc_slice_buffer *garbage) {
|
252
270
|
GPR_ASSERT(n <= sb->length);
|
253
271
|
sb->length -= n;
|
254
272
|
for (;;) {
|
255
273
|
size_t idx = sb->count - 1;
|
256
|
-
|
257
|
-
size_t slice_len =
|
274
|
+
grpc_slice slice = sb->slices[idx];
|
275
|
+
size_t slice_len = GRPC_SLICE_LENGTH(slice);
|
258
276
|
if (slice_len > n) {
|
259
|
-
sb->slices[idx] =
|
260
|
-
|
277
|
+
sb->slices[idx] = grpc_slice_split_head(&slice, slice_len - n);
|
278
|
+
grpc_slice_buffer_add_indexed(garbage, slice);
|
261
279
|
return;
|
262
280
|
} else if (slice_len == n) {
|
263
|
-
|
281
|
+
grpc_slice_buffer_add_indexed(garbage, slice);
|
264
282
|
sb->count = idx;
|
265
283
|
return;
|
266
284
|
} else {
|
267
|
-
|
285
|
+
grpc_slice_buffer_add_indexed(garbage, slice);
|
268
286
|
n -= slice_len;
|
269
287
|
sb->count = idx;
|
270
288
|
}
|
271
289
|
}
|
272
290
|
}
|
273
291
|
|
274
|
-
|
275
|
-
|
292
|
+
grpc_slice grpc_slice_buffer_take_first(grpc_slice_buffer *sb) {
|
293
|
+
grpc_slice slice;
|
276
294
|
GPR_ASSERT(sb->count > 0);
|
277
295
|
slice = sb->slices[0];
|
278
|
-
memmove(&sb->slices[0], &sb->slices[1], (sb->count - 1) * sizeof(
|
296
|
+
memmove(&sb->slices[0], &sb->slices[1], (sb->count - 1) * sizeof(grpc_slice));
|
279
297
|
sb->count--;
|
280
|
-
sb->length -=
|
298
|
+
sb->length -= GRPC_SLICE_LENGTH(slice);
|
281
299
|
return slice;
|
282
300
|
}
|