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
@@ -90,7 +90,6 @@
|
|
90
90
|
#endif
|
91
91
|
#define GPR_PLATFORM_STRING "windows"
|
92
92
|
#define GPR_WINDOWS 1
|
93
|
-
#define GPR_WINSOCK_SOCKET 1
|
94
93
|
#define GPR_WINDOWS_SUBPROCESS 1
|
95
94
|
#define GPR_WINDOWS_ENV
|
96
95
|
#ifdef __MSYS__
|
@@ -124,24 +123,14 @@
|
|
124
123
|
#define GPR_GCC_TLS 1
|
125
124
|
#define GPR_LINUX 1
|
126
125
|
#define GPR_LINUX_LOG 1
|
127
|
-
#define GPR_POSIX_SOCKET 1
|
128
|
-
#define GPR_POSIX_WAKEUP_FD 1
|
129
|
-
#define GPR_POSIX_SOCKETADDR 1
|
130
|
-
#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
131
|
-
#define GPR_POSIX_SOCKETUTILS 1
|
132
126
|
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
133
|
-
#define GPR_HAVE_UNIX_SOCKET 1
|
134
|
-
#define GPR_HAVE_IP_PKTINFO 1
|
135
|
-
#define GPR_HAVE_IPV6_RECVPKTINFO 1
|
136
127
|
#define GPR_LINUX_ENV 1
|
137
|
-
#define GPR_POSIX_FILE 1
|
138
128
|
#define GPR_POSIX_TMPFILE 1
|
139
129
|
#define GPR_POSIX_STRING 1
|
140
130
|
#define GPR_POSIX_SUBPROCESS 1
|
141
131
|
#define GPR_POSIX_SYNC 1
|
142
132
|
#define GPR_POSIX_TIME 1
|
143
133
|
#define GPR_GETPID_IN_UNISTD_H 1
|
144
|
-
#define GPR_HAVE_MSG_NOSIGNAL 1
|
145
134
|
#ifdef _LP64
|
146
135
|
#define GPR_ARCH_64 1
|
147
136
|
#else /* _LP64 */
|
@@ -155,29 +144,18 @@
|
|
155
144
|
#else /* _LP64 */
|
156
145
|
#define GPR_ARCH_32 1
|
157
146
|
#endif /* _LP64 */
|
158
|
-
#define
|
147
|
+
#define GPR_CPU_POSIX 1
|
159
148
|
#define GPR_GCC_SYNC 1
|
160
149
|
#define GPR_GCC_TLS 1
|
161
|
-
#define GPR_POSIX_MULTIPOLL_WITH_POLL 1
|
162
|
-
#define GPR_POSIX_WAKEUP_FD 1
|
163
|
-
#define GPR_LINUX_EVENTFD 1
|
164
|
-
#define GPR_POSIX_SOCKET 1
|
165
|
-
#define GPR_POSIX_SOCKETADDR 1
|
166
|
-
#define GPR_POSIX_SOCKETUTILS 1
|
167
150
|
#define GPR_POSIX_ENV 1
|
168
|
-
#define GPR_POSIX_FILE 1
|
169
151
|
#define GPR_POSIX_TMPFILE 1
|
170
|
-
#define
|
152
|
+
#define GPR_ANDROID_LOG 1
|
171
153
|
#define GPR_POSIX_STRING 1
|
172
154
|
#define GPR_POSIX_SUBPROCESS 1
|
173
155
|
#define GPR_POSIX_SYNC 1
|
174
156
|
#define GPR_POSIX_TIME 1
|
175
157
|
#define GPR_GETPID_IN_UNISTD_H 1
|
176
158
|
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
177
|
-
#define GPR_HAVE_MSG_NOSIGNAL 1
|
178
|
-
#define GPR_HAVE_UNIX_SOCKET 1
|
179
|
-
#define GPR_HAVE_IP_PKTINFO 1
|
180
|
-
#define GPR_HAVE_IPV6_RECVPKTINFO 1
|
181
159
|
#elif defined(__linux__)
|
182
160
|
#define GPR_POSIX_CRASH_HANDLER 1
|
183
161
|
#define GPR_PLATFORM_STRING "linux"
|
@@ -196,49 +174,25 @@
|
|
196
174
|
#define GPR_GCC_TLS 1
|
197
175
|
#define GPR_LINUX 1
|
198
176
|
#define GPR_LINUX_LOG
|
199
|
-
#define GPR_LINUX_MULTIPOLL_WITH_EPOLL 1
|
200
|
-
#define GPR_POSIX_WAKEUP_FD 1
|
201
|
-
#define GPR_POSIX_SOCKET 1
|
202
|
-
#define GPR_POSIX_SOCKETADDR 1
|
203
177
|
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
204
|
-
#define GPR_HAVE_UNIX_SOCKET 1
|
205
|
-
#define GPR_HAVE_IP_PKTINFO 1
|
206
|
-
#define GPR_HAVE_IPV6_RECVPKTINFO 1
|
207
|
-
#ifdef __GLIBC_PREREQ
|
208
|
-
#if __GLIBC_PREREQ(2, 9)
|
209
|
-
#define GPR_LINUX_EVENTFD 1
|
210
|
-
#define GPR_LINUX_EPOLL 1
|
211
|
-
#endif
|
212
|
-
#if __GLIBC_PREREQ(2, 10)
|
213
|
-
#define GPR_LINUX_SOCKETUTILS 1
|
214
|
-
#endif
|
215
|
-
#endif
|
216
178
|
#define GPR_LINUX_ENV 1
|
217
|
-
#ifndef GPR_LINUX_EVENTFD
|
218
|
-
#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
219
|
-
#endif
|
220
|
-
#ifndef GPR_LINUX_SOCKETUTILS
|
221
|
-
#define GPR_POSIX_SOCKETUTILS
|
222
|
-
#endif
|
223
|
-
#define GPR_POSIX_FILE 1
|
224
179
|
#define GPR_POSIX_TMPFILE 1
|
225
180
|
#define GPR_POSIX_STRING 1
|
226
181
|
#define GPR_POSIX_SUBPROCESS 1
|
227
182
|
#define GPR_POSIX_SYNC 1
|
228
183
|
#define GPR_POSIX_TIME 1
|
229
184
|
#define GPR_GETPID_IN_UNISTD_H 1
|
230
|
-
#define GPR_HAVE_MSG_NOSIGNAL 1
|
231
185
|
#ifdef _LP64
|
232
186
|
#define GPR_ARCH_64 1
|
233
187
|
#else /* _LP64 */
|
234
188
|
#define GPR_ARCH_32 1
|
235
189
|
#endif /* _LP64 */
|
236
190
|
#elif defined(__APPLE__)
|
191
|
+
#include <Availability.h>
|
237
192
|
#include <TargetConditionals.h>
|
238
193
|
#ifndef _BSD_SOURCE
|
239
194
|
#define _BSD_SOURCE
|
240
195
|
#endif
|
241
|
-
#define GPR_MSG_IOVLEN_TYPE int
|
242
196
|
#if TARGET_OS_IPHONE
|
243
197
|
#define GPR_FORBID_UNREACHABLE_CODE 1
|
244
198
|
#define GPR_PLATFORM_STRING "ios"
|
@@ -246,20 +200,24 @@
|
|
246
200
|
#define GPR_PTHREAD_TLS 1
|
247
201
|
#else /* TARGET_OS_IPHONE */
|
248
202
|
#define GPR_PLATFORM_STRING "osx"
|
203
|
+
#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED
|
204
|
+
#if __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7
|
205
|
+
#define GPR_CPU_IPHONE 1
|
206
|
+
#define GPR_PTHREAD_TLS 1
|
207
|
+
#else /* __MAC_OS_X_VERSION_MIN_REQUIRED < __MAC_10_7 */
|
249
208
|
#define GPR_CPU_POSIX 1
|
250
209
|
#define GPR_GCC_TLS 1
|
210
|
+
#endif
|
211
|
+
#else /* __MAC_OS_X_VERSION_MIN_REQUIRED */
|
212
|
+
#define GPR_CPU_POSIX 1
|
213
|
+
#define GPR_GCC_TLS 1
|
214
|
+
#endif
|
251
215
|
#define GPR_POSIX_CRASH_HANDLER 1
|
252
216
|
#endif
|
217
|
+
#define GPR_APPLE 1
|
253
218
|
#define GPR_GCC_ATOMIC 1
|
254
219
|
#define GPR_POSIX_LOG 1
|
255
|
-
#define GPR_POSIX_MULTIPOLL_WITH_POLL 1
|
256
|
-
#define GPR_POSIX_WAKEUP_FD 1
|
257
|
-
#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
258
|
-
#define GPR_POSIX_SOCKET 1
|
259
|
-
#define GPR_POSIX_SOCKETADDR 1
|
260
|
-
#define GPR_POSIX_SOCKETUTILS 1
|
261
220
|
#define GPR_POSIX_ENV 1
|
262
|
-
#define GPR_POSIX_FILE 1
|
263
221
|
#define GPR_POSIX_TMPFILE 1
|
264
222
|
#define GPR_POSIX_STRING 1
|
265
223
|
#define GPR_POSIX_SUBPROCESS 1
|
@@ -267,9 +225,6 @@
|
|
267
225
|
#define GPR_POSIX_TIME 1
|
268
226
|
#define GPR_GETPID_IN_UNISTD_H 1
|
269
227
|
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
270
|
-
#define GPR_HAVE_SO_NOSIGPIPE 1
|
271
|
-
#define GPR_HAVE_UNIX_SOCKET 1
|
272
|
-
#define GPR_HAVE_IP_PKTINFO 1
|
273
228
|
#ifdef _LP64
|
274
229
|
#define GPR_ARCH_64 1
|
275
230
|
#else /* _LP64 */
|
@@ -280,18 +235,12 @@
|
|
280
235
|
#ifndef _BSD_SOURCE
|
281
236
|
#define _BSD_SOURCE
|
282
237
|
#endif
|
238
|
+
#define GPR_FREEBSD 1
|
283
239
|
#define GPR_CPU_POSIX 1
|
284
240
|
#define GPR_GCC_ATOMIC 1
|
285
241
|
#define GPR_GCC_TLS 1
|
286
242
|
#define GPR_POSIX_LOG 1
|
287
|
-
#define GPR_POSIX_MULTIPOLL_WITH_POLL 1
|
288
|
-
#define GPR_POSIX_WAKEUP_FD 1
|
289
|
-
#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
290
|
-
#define GPR_POSIX_SOCKET 1
|
291
|
-
#define GPR_POSIX_SOCKETADDR 1
|
292
|
-
#define GPR_POSIX_SOCKETUTILS 1
|
293
243
|
#define GPR_POSIX_ENV 1
|
294
|
-
#define GPR_POSIX_FILE 1
|
295
244
|
#define GPR_POSIX_TMPFILE 1
|
296
245
|
#define GPR_POSIX_STRING 1
|
297
246
|
#define GPR_POSIX_SUBPROCESS 1
|
@@ -299,10 +248,6 @@
|
|
299
248
|
#define GPR_POSIX_TIME 1
|
300
249
|
#define GPR_GETPID_IN_UNISTD_H 1
|
301
250
|
#define GPR_SUPPORT_CHANNELS_FROM_FD 1
|
302
|
-
#define GPR_HAVE_SO_NOSIGPIPE 1
|
303
|
-
#define GPR_HAVE_UNIX_SOCKET 1
|
304
|
-
#define GPR_HAVE_IP_PKTINFO 1
|
305
|
-
#define GPR_HAVE_IPV6_RECVPKTINFO 1
|
306
251
|
#ifdef _LP64
|
307
252
|
#define GPR_ARCH_64 1
|
308
253
|
#else /* _LP64 */
|
@@ -319,18 +264,12 @@
|
|
319
264
|
#ifndef _GNU_SOURCE
|
320
265
|
#define _GNU_SOURCE
|
321
266
|
#endif
|
267
|
+
#define GPR_NACL 1
|
322
268
|
#define GPR_CPU_POSIX 1
|
323
269
|
#define GPR_GCC_ATOMIC 1
|
324
270
|
#define GPR_GCC_TLS 1
|
325
271
|
#define GPR_POSIX_LOG 1
|
326
|
-
#define GPR_POSIX_MULTIPOLL_WITH_POLL 1
|
327
|
-
#define GPR_POSIX_WAKEUP_FD 1
|
328
|
-
#define GPR_POSIX_NO_SPECIAL_WAKEUP_FD 1
|
329
|
-
#define GPR_POSIX_SOCKET 1
|
330
|
-
#define GPR_POSIX_SOCKETADDR 1
|
331
|
-
#define GPR_POSIX_SOCKETUTILS 1
|
332
272
|
#define GPR_POSIX_ENV 1
|
333
|
-
#define GPR_POSIX_FILE 1
|
334
273
|
#define GPR_POSIX_TMPFILE 1
|
335
274
|
#define GPR_POSIX_STRING 1
|
336
275
|
#define GPR_POSIX_SUBPROCESS 1
|
@@ -358,6 +297,10 @@
|
|
358
297
|
#endif
|
359
298
|
|
360
299
|
#ifdef _MSC_VER
|
300
|
+
#ifdef _PYTHON_MSVC
|
301
|
+
// The Python 3.5 Windows runtime is missing InetNtop
|
302
|
+
#define GPR_WIN_INET_NTOP
|
303
|
+
#endif // _PYTHON_MSVC
|
361
304
|
#if _MSC_VER < 1700
|
362
305
|
typedef __int8 int8_t;
|
363
306
|
typedef __int16 int16_t;
|
@@ -411,16 +354,6 @@ typedef unsigned __int64 uint64_t;
|
|
411
354
|
#error Must define exactly one of GPR_CPU_LINUX, GPR_CPU_POSIX, GPR_WINDOWS, GPR_CPU_IPHONE, GPR_CPU_CUSTOM
|
412
355
|
#endif
|
413
356
|
|
414
|
-
#if defined(GPR_POSIX_MULTIPOLL_WITH_POLL) && !defined(GPR_POSIX_SOCKET)
|
415
|
-
#error Must define GPR_POSIX_SOCKET to use GPR_POSIX_MULTIPOLL_WITH_POLL
|
416
|
-
#endif
|
417
|
-
|
418
|
-
#if defined(GPR_POSIX_SOCKET) + defined(GPR_WINSOCK_SOCKET) + \
|
419
|
-
defined(GPR_CUSTOM_SOCKET) != \
|
420
|
-
1
|
421
|
-
#error Must define exactly one of GPR_POSIX_SOCKET, GPR_WINSOCK_SOCKET, GPR_CUSTOM_SOCKET
|
422
|
-
#endif
|
423
|
-
|
424
357
|
#if defined(GPR_MSVC_TLS) + defined(GPR_GCC_TLS) + defined(GPR_PTHREAD_TLS) + \
|
425
358
|
defined(GPR_CUSTOM_TLS) != \
|
426
359
|
1
|
@@ -432,21 +365,21 @@ typedef unsigned __int64 uint64_t;
|
|
432
365
|
#define GPR_MAX_ALIGNMENT 16
|
433
366
|
|
434
367
|
#ifndef GRPC_MUST_USE_RESULT
|
435
|
-
#
|
368
|
+
#if defined(__GNUC__) && !defined(__MINGW32__)
|
436
369
|
#define GRPC_MUST_USE_RESULT __attribute__((warn_unused_result))
|
437
370
|
#else
|
438
371
|
#define GRPC_MUST_USE_RESULT
|
439
372
|
#endif
|
440
373
|
#endif
|
441
374
|
|
442
|
-
#ifndef
|
375
|
+
#ifndef GPR_PRINT_FORMAT_CHECK
|
443
376
|
#ifdef __GNUC__
|
444
|
-
#define
|
377
|
+
#define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS) \
|
445
378
|
__attribute__((format(printf, FORMAT_STR, ARGS)))
|
446
379
|
#else
|
447
|
-
#define
|
380
|
+
#define GPR_PRINT_FORMAT_CHECK(FORMAT_STR, ARGS)
|
448
381
|
#endif
|
449
|
-
#endif /*
|
382
|
+
#endif /* GPR_PRINT_FORMAT_CHECK */
|
450
383
|
|
451
384
|
#if GPR_FORBID_UNREACHABLE_CODE
|
452
385
|
#define GPR_UNREACHABLE_CODE(STATEMENT)
|
@@ -34,13 +34,11 @@
|
|
34
34
|
#ifndef GRPC_IMPL_CODEGEN_SLICE_H
|
35
35
|
#define GRPC_IMPL_CODEGEN_SLICE_H
|
36
36
|
|
37
|
-
#include <grpc/impl/codegen/sync.h>
|
38
|
-
|
39
37
|
#include <stddef.h>
|
38
|
+
#include <stdint.h>
|
40
39
|
|
41
|
-
#
|
42
|
-
|
43
|
-
#endif
|
40
|
+
#include <grpc/impl/codegen/exec_ctx_fwd.h>
|
41
|
+
#include <grpc/impl/codegen/gpr_slice.h>
|
44
42
|
|
45
43
|
/* Slice API
|
46
44
|
|
@@ -55,29 +53,29 @@ extern "C" {
|
|
55
53
|
reference ownership semantics (who should call unref?) and mutability
|
56
54
|
constraints (is the callee allowed to modify the slice?) */
|
57
55
|
|
58
|
-
/* Reference count container for
|
56
|
+
/* Reference count container for grpc_slice. Contains function pointers to
|
59
57
|
increment and decrement reference counts. Implementations should cleanup
|
60
58
|
when the reference count drops to zero.
|
61
|
-
Typically client code should not touch this, and use
|
62
|
-
|
63
|
-
typedef struct
|
59
|
+
Typically client code should not touch this, and use grpc_slice_malloc,
|
60
|
+
grpc_slice_new, or grpc_slice_new_with_len instead. */
|
61
|
+
typedef struct grpc_slice_refcount {
|
64
62
|
void (*ref)(void *);
|
65
|
-
void (*unref)(void *);
|
66
|
-
}
|
63
|
+
void (*unref)(grpc_exec_ctx *exec_ctx, void *);
|
64
|
+
} grpc_slice_refcount;
|
67
65
|
|
68
|
-
#define
|
66
|
+
#define GRPC_SLICE_INLINED_SIZE (sizeof(size_t) + sizeof(uint8_t *) - 1)
|
69
67
|
|
70
|
-
/* A
|
68
|
+
/* A grpc_slice s, if initialized, represents the byte range
|
71
69
|
s.bytes[0..s.length-1].
|
72
70
|
|
73
71
|
It can have an associated ref count which has a destruction routine to be run
|
74
|
-
when the ref count reaches zero (see
|
75
|
-
Multiple
|
72
|
+
when the ref count reaches zero (see grpc_slice_new() and grp_slice_unref()).
|
73
|
+
Multiple grpc_slice values may share a ref count.
|
76
74
|
|
77
75
|
If the slice does not have a refcount, it represents an inlined small piece
|
78
76
|
of data that is copied by value. */
|
79
|
-
typedef struct
|
80
|
-
struct
|
77
|
+
typedef struct grpc_slice {
|
78
|
+
struct grpc_slice_refcount *refcount;
|
81
79
|
union {
|
82
80
|
struct {
|
83
81
|
uint8_t *bytes;
|
@@ -85,11 +83,44 @@ typedef struct gpr_slice {
|
|
85
83
|
} refcounted;
|
86
84
|
struct {
|
87
85
|
uint8_t length;
|
88
|
-
uint8_t bytes[
|
86
|
+
uint8_t bytes[GRPC_SLICE_INLINED_SIZE];
|
89
87
|
} inlined;
|
90
88
|
} data;
|
91
|
-
}
|
89
|
+
} grpc_slice;
|
90
|
+
|
91
|
+
#define GRPC_SLICE_BUFFER_INLINE_ELEMENTS 8
|
92
|
+
|
93
|
+
/* Represents an expandable array of slices, to be interpreted as a
|
94
|
+
single item. */
|
95
|
+
typedef struct {
|
96
|
+
/* slices in the array */
|
97
|
+
grpc_slice *slices;
|
98
|
+
/* the number of slices in the array */
|
99
|
+
size_t count;
|
100
|
+
/* the number of slices allocated in the array */
|
101
|
+
size_t capacity;
|
102
|
+
/* the combined length of all slices in the array */
|
103
|
+
size_t length;
|
104
|
+
/* inlined elements to avoid allocations */
|
105
|
+
grpc_slice inlined[GRPC_SLICE_BUFFER_INLINE_ELEMENTS];
|
106
|
+
} grpc_slice_buffer;
|
107
|
+
|
108
|
+
#define GRPC_SLICE_START_PTR(slice) \
|
109
|
+
((slice).refcount ? (slice).data.refcounted.bytes \
|
110
|
+
: (slice).data.inlined.bytes)
|
111
|
+
#define GRPC_SLICE_LENGTH(slice) \
|
112
|
+
((slice).refcount ? (slice).data.refcounted.length \
|
113
|
+
: (slice).data.inlined.length)
|
114
|
+
#define GRPC_SLICE_SET_LENGTH(slice, newlen) \
|
115
|
+
((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \
|
116
|
+
: ((slice).data.inlined.length = (uint8_t)(newlen)))
|
117
|
+
#define GRPC_SLICE_END_PTR(slice) \
|
118
|
+
GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice)
|
119
|
+
#define GRPC_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0)
|
92
120
|
|
121
|
+
#ifdef GRPC_ALLOW_GPR_SLICE_FUNCTIONS
|
122
|
+
|
123
|
+
/* Duplicate GPR_* definitions */
|
93
124
|
#define GPR_SLICE_START_PTR(slice) \
|
94
125
|
((slice).refcount ? (slice).data.refcounted.bytes \
|
95
126
|
: (slice).data.inlined.bytes)
|
@@ -100,83 +131,9 @@ typedef struct gpr_slice {
|
|
100
131
|
((slice).refcount ? ((slice).data.refcounted.length = (size_t)(newlen)) \
|
101
132
|
: ((slice).data.inlined.length = (uint8_t)(newlen)))
|
102
133
|
#define GPR_SLICE_END_PTR(slice) \
|
103
|
-
|
104
|
-
#define GPR_SLICE_IS_EMPTY(slice) (
|
105
|
-
|
106
|
-
/*
|
107
|
-
Returns s. */
|
108
|
-
GPRAPI gpr_slice gpr_slice_ref(gpr_slice s);
|
109
|
-
|
110
|
-
/* Decrement the ref count of s. If the ref count of s reaches zero, all
|
111
|
-
slices sharing the ref count are destroyed, and considered no longer
|
112
|
-
initialized. If s is ultimately derived from a call to gpr_slice_new(start,
|
113
|
-
len, dest) where dest!=NULL , then (*dest)(start) is called, else if s is
|
114
|
-
ultimately derived from a call to gpr_slice_new_with_len(start, len, dest)
|
115
|
-
where dest!=NULL , then (*dest)(start, len). Requires s initialized. */
|
116
|
-
GPRAPI void gpr_slice_unref(gpr_slice s);
|
117
|
-
|
118
|
-
/* Create a slice pointing at some data. Calls malloc to allocate a refcount
|
119
|
-
for the object, and arranges that destroy will be called with the pointer
|
120
|
-
passed in at destruction. */
|
121
|
-
GPRAPI gpr_slice gpr_slice_new(void *p, size_t len, void (*destroy)(void *));
|
122
|
-
|
123
|
-
/* Equivalent to gpr_slice_new, but with a two argument destroy function that
|
124
|
-
also takes the slice length. */
|
125
|
-
GPRAPI gpr_slice gpr_slice_new_with_len(void *p, size_t len,
|
126
|
-
void (*destroy)(void *, size_t));
|
127
|
-
|
128
|
-
/* Equivalent to gpr_slice_new(malloc(len), len, free), but saves one malloc()
|
129
|
-
call.
|
130
|
-
Aborts if malloc() fails. */
|
131
|
-
GPRAPI gpr_slice gpr_slice_malloc(size_t length);
|
132
|
-
|
133
|
-
/* Create a slice by copying a string.
|
134
|
-
Does not preserve null terminators.
|
135
|
-
Equivalent to:
|
136
|
-
size_t len = strlen(source);
|
137
|
-
gpr_slice slice = gpr_slice_malloc(len);
|
138
|
-
memcpy(slice->data, source, len); */
|
139
|
-
GPRAPI gpr_slice gpr_slice_from_copied_string(const char *source);
|
140
|
-
|
141
|
-
/* Create a slice by copying a buffer.
|
142
|
-
Equivalent to:
|
143
|
-
gpr_slice slice = gpr_slice_malloc(len);
|
144
|
-
memcpy(slice->data, source, len); */
|
145
|
-
GPRAPI gpr_slice gpr_slice_from_copied_buffer(const char *source, size_t len);
|
146
|
-
|
147
|
-
/* Create a slice pointing to constant memory */
|
148
|
-
GPRAPI gpr_slice gpr_slice_from_static_string(const char *source);
|
149
|
-
|
150
|
-
/* Return a result slice derived from s, which shares a ref count with s, where
|
151
|
-
result.data==s.data+begin, and result.length==end-begin.
|
152
|
-
The ref count of s is increased by one.
|
153
|
-
Requires s initialized, begin <= end, begin <= s.length, and
|
154
|
-
end <= source->length. */
|
155
|
-
GPRAPI gpr_slice gpr_slice_sub(gpr_slice s, size_t begin, size_t end);
|
156
|
-
|
157
|
-
/* The same as gpr_slice_sub, but without altering the ref count */
|
158
|
-
GPRAPI gpr_slice gpr_slice_sub_no_ref(gpr_slice s, size_t begin, size_t end);
|
159
|
-
|
160
|
-
/* Splits s into two: modifies s to be s[0:split], and returns a new slice,
|
161
|
-
sharing a refcount with s, that contains s[split:s.length].
|
162
|
-
Requires s intialized, split <= s.length */
|
163
|
-
GPRAPI gpr_slice gpr_slice_split_tail(gpr_slice *s, size_t split);
|
164
|
-
|
165
|
-
/* Splits s into two: modifies s to be s[split:s.length], and returns a new
|
166
|
-
slice, sharing a refcount with s, that contains s[0:split].
|
167
|
-
Requires s intialized, split <= s.length */
|
168
|
-
GPRAPI gpr_slice gpr_slice_split_head(gpr_slice *s, size_t split);
|
169
|
-
|
170
|
-
GPRAPI gpr_slice gpr_empty_slice(void);
|
171
|
-
|
172
|
-
/* Returns <0 if a < b, ==0 if a == b, >0 if a > b
|
173
|
-
The order is arbitrary, and is not guaranteed to be stable across different
|
174
|
-
versions of the API. */
|
175
|
-
GPRAPI int gpr_slice_cmp(gpr_slice a, gpr_slice b);
|
176
|
-
GPRAPI int gpr_slice_str_cmp(gpr_slice a, const char *b);
|
177
|
-
|
178
|
-
#ifdef __cplusplus
|
179
|
-
}
|
180
|
-
#endif
|
134
|
+
GRPC_SLICE_START_PTR(slice) + GRPC_SLICE_LENGTH(slice)
|
135
|
+
#define GPR_SLICE_IS_EMPTY(slice) (GRPC_SLICE_LENGTH(slice) == 0)
|
136
|
+
|
137
|
+
#endif /* GRPC_ALLOW_GPR_SLICE_FUNCTIONS */
|
181
138
|
|
182
139
|
#endif /* GRPC_IMPL_CODEGEN_SLICE_H */
|
@@ -64,257 +64,4 @@
|
|
64
64
|
#error Unable to determine platform for sync
|
65
65
|
#endif
|
66
66
|
|
67
|
-
#include <grpc/impl/codegen/time.h> /* for gpr_timespec */
|
68
|
-
|
69
|
-
#ifdef __cplusplus
|
70
|
-
extern "C" {
|
71
|
-
#endif
|
72
|
-
|
73
|
-
/* --- Mutex interface ---
|
74
|
-
|
75
|
-
At most one thread may hold an exclusive lock on a mutex at any given time.
|
76
|
-
Actions taken by a thread that holds a mutex exclusively happen after
|
77
|
-
actions taken by all previous holders of the mutex. Variables of type
|
78
|
-
gpr_mu are uninitialized when first declared. */
|
79
|
-
|
80
|
-
/* Initialize *mu. Requires: *mu uninitialized. */
|
81
|
-
GPRAPI void gpr_mu_init(gpr_mu *mu);
|
82
|
-
|
83
|
-
/* Cause *mu no longer to be initialized, freeing any memory in use. Requires:
|
84
|
-
*mu initialized; no other concurrent operation on *mu. */
|
85
|
-
GPRAPI void gpr_mu_destroy(gpr_mu *mu);
|
86
|
-
|
87
|
-
/* Wait until no thread has a lock on *mu, cause the calling thread to own an
|
88
|
-
exclusive lock on *mu, then return. May block indefinitely or crash if the
|
89
|
-
calling thread has a lock on *mu. Requires: *mu initialized. */
|
90
|
-
GPRAPI void gpr_mu_lock(gpr_mu *mu);
|
91
|
-
|
92
|
-
/* Release an exclusive lock on *mu held by the calling thread. Requires: *mu
|
93
|
-
initialized; the calling thread holds an exclusive lock on *mu. */
|
94
|
-
GPRAPI void gpr_mu_unlock(gpr_mu *mu);
|
95
|
-
|
96
|
-
/* Without blocking, attempt to acquire an exclusive lock on *mu for the
|
97
|
-
calling thread, then return non-zero iff success. Fail, if any thread holds
|
98
|
-
the lock; succeeds with high probability if no thread holds the lock.
|
99
|
-
Requires: *mu initialized. */
|
100
|
-
GPRAPI int gpr_mu_trylock(gpr_mu *mu);
|
101
|
-
|
102
|
-
/* --- Condition variable interface ---
|
103
|
-
|
104
|
-
A while-loop should be used with gpr_cv_wait() when waiting for conditions
|
105
|
-
to become true. See the example below. Variables of type gpr_cv are
|
106
|
-
uninitialized when first declared. */
|
107
|
-
|
108
|
-
/* Initialize *cv. Requires: *cv uninitialized. */
|
109
|
-
GPRAPI void gpr_cv_init(gpr_cv *cv);
|
110
|
-
|
111
|
-
/* Cause *cv no longer to be initialized, freeing any memory in use. Requires:
|
112
|
-
*cv initialized; no other concurrent operation on *cv.*/
|
113
|
-
GPRAPI void gpr_cv_destroy(gpr_cv *cv);
|
114
|
-
|
115
|
-
/* Atomically release *mu and wait on *cv. When the calling thread is woken
|
116
|
-
from *cv or the deadline abs_deadline is exceeded, execute gpr_mu_lock(mu)
|
117
|
-
and return whether the deadline was exceeded. Use
|
118
|
-
abs_deadline==gpr_inf_future for no deadline. abs_deadline can be either
|
119
|
-
an absolute deadline, or a GPR_TIMESPAN. May return even when not
|
120
|
-
woken explicitly. Requires: *mu and *cv initialized; the calling thread
|
121
|
-
holds an exclusive lock on *mu. */
|
122
|
-
GPRAPI int gpr_cv_wait(gpr_cv *cv, gpr_mu *mu, gpr_timespec abs_deadline);
|
123
|
-
|
124
|
-
/* If any threads are waiting on *cv, wake at least one.
|
125
|
-
Clients may treat this as an optimization of gpr_cv_broadcast()
|
126
|
-
for use in the case where waking more than one waiter is not useful.
|
127
|
-
Requires: *cv initialized. */
|
128
|
-
GPRAPI void gpr_cv_signal(gpr_cv *cv);
|
129
|
-
|
130
|
-
/* Wake all threads waiting on *cv. Requires: *cv initialized. */
|
131
|
-
GPRAPI void gpr_cv_broadcast(gpr_cv *cv);
|
132
|
-
|
133
|
-
/* --- One-time initialization ---
|
134
|
-
|
135
|
-
gpr_once must be declared with static storage class, and initialized with
|
136
|
-
GPR_ONCE_INIT. e.g.,
|
137
|
-
static gpr_once once_var = GPR_ONCE_INIT; */
|
138
|
-
|
139
|
-
/* Ensure that (*init_routine)() has been called exactly once (for the
|
140
|
-
specified gpr_once instance) and then return.
|
141
|
-
If multiple threads call gpr_once() on the same gpr_once instance, one of
|
142
|
-
them will call (*init_routine)(), and the others will block until that call
|
143
|
-
finishes.*/
|
144
|
-
GPRAPI void gpr_once_init(gpr_once *once, void (*init_routine)(void));
|
145
|
-
|
146
|
-
/* --- One-time event notification ---
|
147
|
-
|
148
|
-
These operations act on a gpr_event, which should be initialized with
|
149
|
-
gpr_ev_init(), or with GPR_EVENT_INIT if static, e.g.,
|
150
|
-
static gpr_event event_var = GPR_EVENT_INIT;
|
151
|
-
It requires no destruction. */
|
152
|
-
|
153
|
-
/* Initialize *ev. */
|
154
|
-
GPRAPI void gpr_event_init(gpr_event *ev);
|
155
|
-
|
156
|
-
/* Set *ev so that gpr_event_get() and gpr_event_wait() will return value.
|
157
|
-
Requires: *ev initialized; value != NULL; no prior or concurrent calls to
|
158
|
-
gpr_event_set(ev, ...) since initialization. */
|
159
|
-
GPRAPI void gpr_event_set(gpr_event *ev, void *value);
|
160
|
-
|
161
|
-
/* Return the value set by gpr_event_set(ev, ...), or NULL if no such call has
|
162
|
-
completed. If the result is non-NULL, all operations that occurred prior to
|
163
|
-
the gpr_event_set(ev, ...) set will be visible after this call returns.
|
164
|
-
Requires: *ev initialized. This operation is faster than acquiring a mutex
|
165
|
-
on most platforms. */
|
166
|
-
GPRAPI void *gpr_event_get(gpr_event *ev);
|
167
|
-
|
168
|
-
/* Wait until *ev is set by gpr_event_set(ev, ...), or abs_deadline is
|
169
|
-
exceeded, then return gpr_event_get(ev). Requires: *ev initialized. Use
|
170
|
-
abs_deadline==gpr_inf_future for no deadline. When the event has been
|
171
|
-
signalled before the call, this operation is faster than acquiring a mutex
|
172
|
-
on most platforms. */
|
173
|
-
GPRAPI void *gpr_event_wait(gpr_event *ev, gpr_timespec abs_deadline);
|
174
|
-
|
175
|
-
/* --- Reference counting ---
|
176
|
-
|
177
|
-
These calls act on the type gpr_refcount. It requires no destruction. */
|
178
|
-
|
179
|
-
/* Initialize *r to value n. */
|
180
|
-
GPRAPI void gpr_ref_init(gpr_refcount *r, int n);
|
181
|
-
|
182
|
-
/* Increment the reference count *r. Requires *r initialized. */
|
183
|
-
GPRAPI void gpr_ref(gpr_refcount *r);
|
184
|
-
|
185
|
-
/* Increment the reference count *r. Requires *r initialized.
|
186
|
-
Crashes if refcount is zero */
|
187
|
-
GPRAPI void gpr_ref_non_zero(gpr_refcount *r);
|
188
|
-
|
189
|
-
/* Increment the reference count *r by n. Requires *r initialized, n > 0. */
|
190
|
-
GPRAPI void gpr_refn(gpr_refcount *r, int n);
|
191
|
-
|
192
|
-
/* Decrement the reference count *r and return non-zero iff it has reached
|
193
|
-
zero. . Requires *r initialized. */
|
194
|
-
GPRAPI int gpr_unref(gpr_refcount *r);
|
195
|
-
|
196
|
-
/* --- Stats counters ---
|
197
|
-
|
198
|
-
These calls act on the integral type gpr_stats_counter. It requires no
|
199
|
-
destruction. Static instances may be initialized with
|
200
|
-
gpr_stats_counter c = GPR_STATS_INIT;
|
201
|
-
Beware: These operations do not imply memory barriers. Do not use them to
|
202
|
-
synchronize other events. */
|
203
|
-
|
204
|
-
/* Initialize *c to the value n. */
|
205
|
-
GPRAPI void gpr_stats_init(gpr_stats_counter *c, intptr_t n);
|
206
|
-
|
207
|
-
/* *c += inc. Requires: *c initialized. */
|
208
|
-
GPRAPI void gpr_stats_inc(gpr_stats_counter *c, intptr_t inc);
|
209
|
-
|
210
|
-
/* Return *c. Requires: *c initialized. */
|
211
|
-
GPRAPI intptr_t gpr_stats_read(const gpr_stats_counter *c);
|
212
|
-
|
213
|
-
/* ==================Example use of interface===================
|
214
|
-
A producer-consumer queue of up to N integers,
|
215
|
-
illustrating the use of the calls in this interface. */
|
216
|
-
#if 0
|
217
|
-
|
218
|
-
#define N 4
|
219
|
-
|
220
|
-
typedef struct queue {
|
221
|
-
gpr_cv non_empty; /* Signalled when length becomes non-zero. */
|
222
|
-
gpr_cv non_full; /* Signalled when length becomes non-N. */
|
223
|
-
gpr_mu mu; /* Protects all fields below.
|
224
|
-
(That is, except during initialization or
|
225
|
-
destruction, the fields below should be accessed
|
226
|
-
only by a thread that holds mu.) */
|
227
|
-
int head; /* Index of head of queue 0..N-1. */
|
228
|
-
int length; /* Number of valid elements in queue 0..N. */
|
229
|
-
int elem[N]; /* elem[head .. head+length-1] are queue elements. */
|
230
|
-
} queue;
|
231
|
-
|
232
|
-
/* Initialize *q. */
|
233
|
-
void queue_init(queue *q) {
|
234
|
-
gpr_mu_init(&q->mu);
|
235
|
-
gpr_cv_init(&q->non_empty);
|
236
|
-
gpr_cv_init(&q->non_full);
|
237
|
-
q->head = 0;
|
238
|
-
q->length = 0;
|
239
|
-
}
|
240
|
-
|
241
|
-
/* Free storage associated with *q. */
|
242
|
-
void queue_destroy(queue *q) {
|
243
|
-
gpr_mu_destroy(&q->mu);
|
244
|
-
gpr_cv_destroy(&q->non_empty);
|
245
|
-
gpr_cv_destroy(&q->non_full);
|
246
|
-
}
|
247
|
-
|
248
|
-
/* Wait until there is room in *q, then append x to *q. */
|
249
|
-
void queue_append(queue *q, int x) {
|
250
|
-
gpr_mu_lock(&q->mu);
|
251
|
-
/* To wait for a predicate without a deadline, loop on the negation of the
|
252
|
-
predicate, and use gpr_cv_wait(..., gpr_inf_future) inside the loop
|
253
|
-
to release the lock, wait, and reacquire on each iteration. Code that
|
254
|
-
makes the condition true should use gpr_cv_broadcast() on the
|
255
|
-
corresponding condition variable. The predicate must be on state
|
256
|
-
protected by the lock. */
|
257
|
-
while (q->length == N) {
|
258
|
-
gpr_cv_wait(&q->non_full, &q->mu, gpr_inf_future);
|
259
|
-
}
|
260
|
-
if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
|
261
|
-
/* It's normal to use gpr_cv_broadcast() or gpr_signal() while
|
262
|
-
holding the lock. */
|
263
|
-
gpr_cv_broadcast(&q->non_empty);
|
264
|
-
}
|
265
|
-
q->elem[(q->head + q->length) % N] = x;
|
266
|
-
q->length++;
|
267
|
-
gpr_mu_unlock(&q->mu);
|
268
|
-
}
|
269
|
-
|
270
|
-
/* If it can be done without blocking, append x to *q and return non-zero.
|
271
|
-
Otherwise return 0. */
|
272
|
-
int queue_try_append(queue *q, int x) {
|
273
|
-
int result = 0;
|
274
|
-
if (gpr_mu_trylock(&q->mu)) {
|
275
|
-
if (q->length != N) {
|
276
|
-
if (q->length == 0) { /* Wake threads blocked in queue_remove(). */
|
277
|
-
gpr_cv_broadcast(&q->non_empty);
|
278
|
-
}
|
279
|
-
q->elem[(q->head + q->length) % N] = x;
|
280
|
-
q->length++;
|
281
|
-
result = 1;
|
282
|
-
}
|
283
|
-
gpr_mu_unlock(&q->mu);
|
284
|
-
}
|
285
|
-
return result;
|
286
|
-
}
|
287
|
-
|
288
|
-
/* Wait until the *q is non-empty or deadline abs_deadline passes. If the
|
289
|
-
queue is non-empty, remove its head entry, place it in *head, and return
|
290
|
-
non-zero. Otherwise return 0. */
|
291
|
-
int queue_remove(queue *q, int *head, gpr_timespec abs_deadline) {
|
292
|
-
int result = 0;
|
293
|
-
gpr_mu_lock(&q->mu);
|
294
|
-
/* To wait for a predicate with a deadline, loop on the negation of the
|
295
|
-
predicate or until gpr_cv_wait() returns true. Code that makes
|
296
|
-
the condition true should use gpr_cv_broadcast() on the corresponding
|
297
|
-
condition variable. The predicate must be on state protected by the
|
298
|
-
lock. */
|
299
|
-
while (q->length == 0 &&
|
300
|
-
!gpr_cv_wait(&q->non_empty, &q->mu, abs_deadline)) {
|
301
|
-
}
|
302
|
-
if (q->length != 0) { /* Queue is non-empty. */
|
303
|
-
result = 1;
|
304
|
-
if (q->length == N) { /* Wake threads blocked in queue_append(). */
|
305
|
-
gpr_cv_broadcast(&q->non_full);
|
306
|
-
}
|
307
|
-
*head = q->elem[q->head];
|
308
|
-
q->head = (q->head + 1) % N;
|
309
|
-
q->length--;
|
310
|
-
} /* else deadline exceeded */
|
311
|
-
gpr_mu_unlock(&q->mu);
|
312
|
-
return result;
|
313
|
-
}
|
314
|
-
#endif /* 0 */
|
315
|
-
|
316
|
-
#ifdef __cplusplus
|
317
|
-
}
|
318
|
-
#endif
|
319
|
-
|
320
67
|
#endif /* GRPC_IMPL_CODEGEN_SYNC_H */
|