grpc 1.43.1 → 1.44.0.pre2
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 +84 -64
- data/include/grpc/grpc_security.h +10 -0
- data/include/grpc/impl/codegen/compression_types.h +0 -2
- data/include/grpc/impl/codegen/grpc_types.h +6 -0
- data/src/core/ext/filters/client_channel/backend_metric.h +1 -1
- data/src/core/ext/filters/client_channel/client_channel.cc +62 -68
- data/src/core/ext/filters/client_channel/client_channel.h +8 -8
- data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
- data/src/core/ext/filters/client_channel/config_selector.h +4 -4
- data/src/core/ext/filters/client_channel/dynamic_filters.h +1 -1
- data/src/core/ext/filters/client_channel/health/health_check_client.cc +16 -14
- data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
- data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +4 -3
- data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +6 -5
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +3 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +31 -32
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h +0 -7
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +43 -29
- data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +6 -2
- data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +120 -68
- data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +60 -48
- data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +62 -61
- data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +16 -11
- data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +11 -5
- data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +19 -15
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -1
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -12
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +3 -2
- data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +50 -105
- data/src/core/ext/filters/client_channel/lb_policy.cc +15 -14
- data/src/core/ext/filters/client_channel/lb_policy.h +19 -3
- data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +3 -3
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +207 -81
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +22 -12
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +19 -15
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +23 -38
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +118 -207
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +25 -32
- data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +82 -73
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +10 -10
- data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +2 -1
- data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +2 -5
- data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +5 -5
- data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +157 -67
- data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +1 -1
- data/src/core/ext/filters/client_channel/resolver_result_parsing.h +2 -2
- data/src/core/ext/filters/client_channel/retry_filter.cc +37 -64
- data/src/core/ext/filters/client_channel/retry_service_config.cc +1 -1
- data/src/core/ext/filters/client_channel/retry_service_config.h +1 -1
- data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +1 -1
- data/src/core/ext/filters/client_channel/subchannel.cc +12 -16
- data/src/core/ext/filters/client_channel/subchannel.h +2 -3
- data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +37 -48
- data/src/core/ext/filters/fault_injection/service_config_parser.cc +6 -8
- data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
- data/src/core/ext/filters/http/client/http_client_filter.cc +51 -122
- data/src/core/ext/filters/http/client_authority_filter.cc +8 -24
- data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +42 -140
- data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +5 -25
- data/src/core/ext/filters/http/server/http_server_filter.cc +50 -135
- data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
- data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
- data/src/core/ext/filters/rbac/rbac_filter.cc +157 -0
- data/src/core/ext/filters/rbac/rbac_filter.h +74 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +605 -0
- data/src/core/ext/filters/rbac/rbac_service_config_parser.h +70 -0
- data/src/core/ext/filters/server_config_selector/server_config_selector.h +3 -2
- data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +11 -6
- data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +1 -1
- data/src/core/ext/transport/chttp2/server/chttp2_server.cc +89 -29
- data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +45 -186
- data/src/core/ext/transport/chttp2/transport/frame_data.cc +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +341 -279
- data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +69 -159
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +1 -1
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.h +2 -0
- data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +19 -32
- data/src/core/ext/transport/chttp2/transport/hpack_parser.h +0 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +94 -1
- data/src/core/ext/transport/chttp2/transport/hpack_parser_table.h +2 -24
- data/src/core/ext/transport/chttp2/transport/internal.h +0 -33
- data/src/core/ext/transport/chttp2/transport/parsing.cc +0 -6
- data/src/core/ext/transport/chttp2/transport/writing.cc +47 -116
- data/src/core/ext/transport/inproc/inproc_plugin.cc +0 -4
- data/src/core/ext/transport/inproc/inproc_transport.cc +11 -63
- data/src/core/ext/transport/inproc/inproc_transport.h +0 -3
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c +61 -0
- data/src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.h +146 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c +188 -0
- data/src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.h +70 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c +56 -0
- data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c +154 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.h +95 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.c +58 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/eval.upbdefs.h +55 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.c +44 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/explain.upbdefs.h +40 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c +153 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.h +100 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.c +75 -0
- data/src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/value.upbdefs.h +55 -0
- data/src/core/ext/xds/upb_utils.h +65 -0
- data/src/core/ext/xds/xds_api.cc +81 -3458
- data/src/core/ext/xds/xds_api.h +56 -611
- data/src/core/ext/xds/xds_bootstrap.cc +189 -125
- data/src/core/ext/xds/xds_bootstrap.h +20 -15
- data/src/core/ext/xds/xds_certificate_provider.h +1 -0
- data/src/core/ext/xds/xds_channel_creds.cc +108 -0
- data/src/core/ext/xds/xds_channel_creds.h +50 -0
- data/src/core/ext/xds/xds_client.cc +584 -994
- data/src/core/ext/xds/xds_client.h +78 -135
- data/src/core/ext/xds/xds_cluster.cc +451 -0
- data/src/core/ext/xds/xds_cluster.h +111 -0
- data/src/core/ext/xds/xds_common_types.cc +388 -0
- data/src/core/ext/xds/xds_common_types.h +110 -0
- data/src/core/ext/xds/xds_endpoint.cc +364 -0
- data/src/core/ext/xds/xds_endpoint.h +135 -0
- data/src/core/ext/xds/xds_http_filters.cc +5 -0
- data/src/core/ext/xds/xds_http_rbac_filter.cc +563 -0
- data/src/core/ext/xds/xds_http_rbac_filter.h +54 -0
- data/src/core/ext/xds/xds_listener.cc +1036 -0
- data/src/core/ext/xds/xds_listener.h +220 -0
- data/src/core/ext/{transport/chttp2/transport/hpack_utils.h → xds/xds_resource_type.cc} +12 -9
- data/src/core/ext/xds/xds_resource_type.h +98 -0
- data/src/core/ext/xds/xds_resource_type_impl.h +87 -0
- data/src/core/ext/xds/xds_route_config.cc +993 -0
- data/src/core/ext/xds/xds_route_config.h +215 -0
- data/src/core/ext/xds/xds_routing.cc +11 -8
- data/src/core/ext/xds/xds_routing.h +8 -5
- data/src/core/ext/xds/xds_server_config_fetcher.cc +159 -99
- data/src/core/lib/address_utils/parse_address.cc +20 -0
- data/src/core/lib/address_utils/parse_address.h +5 -0
- data/src/core/lib/address_utils/sockaddr_utils.cc +33 -36
- data/src/core/lib/address_utils/sockaddr_utils.h +1 -16
- data/src/core/lib/backoff/backoff.cc +4 -30
- data/src/core/lib/backoff/backoff.h +3 -3
- data/src/core/lib/channel/channel_args.cc +0 -1
- data/src/core/lib/channel/channel_stack.cc +8 -0
- data/src/core/lib/channel/channel_stack.h +1 -1
- data/src/core/lib/channel/channel_stack_builder.cc +5 -9
- data/src/core/lib/channel/channel_stack_builder.h +4 -7
- data/src/core/lib/channel/channelz.cc +1 -0
- data/src/core/lib/compression/compression.cc +19 -111
- data/src/core/lib/compression/compression_internal.cc +142 -202
- data/src/core/lib/compression/compression_internal.h +64 -69
- data/src/core/lib/compression/message_compress.cc +11 -11
- data/src/core/lib/compression/message_compress.h +2 -2
- data/src/core/lib/gpr/useful.h +4 -0
- data/src/core/lib/gprpp/bitset.h +7 -0
- data/src/core/lib/gprpp/chunked_vector.h +45 -3
- data/src/core/lib/gprpp/status_helper.cc +20 -28
- data/src/core/lib/gprpp/status_helper.h +6 -19
- data/src/core/lib/gprpp/table.h +11 -0
- data/src/core/lib/http/httpcli.cc +37 -46
- data/src/core/lib/http/httpcli.h +3 -15
- data/src/core/lib/iomgr/call_combiner.cc +15 -4
- data/src/core/lib/iomgr/closure.h +29 -9
- data/src/core/lib/iomgr/combiner.cc +25 -3
- data/src/core/lib/iomgr/error.cc +2 -0
- data/src/core/lib/iomgr/error.h +3 -0
- data/src/core/lib/iomgr/event_engine/iomgr.cc +3 -2
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +6 -0
- data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +2 -0
- data/src/core/lib/iomgr/event_engine/resolver.cc +66 -48
- data/src/core/lib/iomgr/event_engine/resolver.h +56 -0
- data/src/core/lib/iomgr/exec_ctx.cc +22 -9
- data/src/core/lib/iomgr/executor.cc +10 -1
- data/src/core/lib/iomgr/fork_posix.cc +3 -2
- data/src/core/lib/iomgr/iomgr_custom.cc +4 -1
- data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
- data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
- data/src/core/lib/iomgr/iomgr_windows.cc +2 -2
- data/src/core/lib/iomgr/port.h +2 -2
- data/src/core/lib/iomgr/resolve_address.cc +5 -24
- data/src/core/lib/iomgr/resolve_address.h +47 -44
- data/src/core/lib/iomgr/resolve_address_custom.cc +131 -109
- data/src/core/lib/iomgr/resolve_address_custom.h +101 -19
- data/src/core/lib/iomgr/resolve_address_impl.h +59 -0
- data/src/core/lib/iomgr/resolve_address_posix.cc +82 -66
- data/src/core/lib/iomgr/resolve_address_posix.h +47 -0
- data/src/core/lib/iomgr/resolve_address_windows.cc +93 -74
- data/src/core/lib/iomgr/resolve_address_windows.h +47 -0
- data/src/core/lib/iomgr/resolved_address.h +39 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +1 -0
- data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +1 -0
- data/src/core/lib/iomgr/unix_sockets_posix.cc +22 -34
- data/src/core/lib/iomgr/unix_sockets_posix.h +4 -7
- data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +6 -15
- data/src/core/lib/matchers/matchers.cc +1 -1
- data/src/core/lib/promise/activity.h +49 -20
- data/src/core/lib/promise/detail/status.h +5 -0
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.cc +17 -25
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver.h +43 -44
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_factory.h +10 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.cc +3 -2
- data/src/core/{ext/filters/client_channel → lib/resolver}/resolver_registry.h +4 -5
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.cc +1 -1
- data/src/core/{ext/filters/client_channel → lib/resolver}/server_address.h +4 -4
- data/src/core/lib/resource_quota/api.h +0 -1
- data/src/core/lib/{gprpp → resource_quota}/arena.cc +16 -13
- data/src/core/lib/{gprpp → resource_quota}/arena.h +24 -13
- data/src/core/lib/security/authorization/evaluate_args.cc +30 -15
- data/src/core/lib/security/authorization/evaluate_args.h +1 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.cc +60 -0
- data/src/core/lib/security/authorization/grpc_authorization_engine.h +62 -0
- data/src/core/lib/security/authorization/matchers.cc +227 -0
- data/src/core/lib/security/authorization/matchers.h +211 -0
- data/src/core/lib/security/authorization/rbac_policy.cc +442 -0
- data/src/core/lib/security/authorization/rbac_policy.h +170 -0
- data/src/core/lib/security/context/security_context.cc +4 -2
- data/src/core/lib/security/context/security_context.h +1 -1
- data/src/core/lib/security/credentials/composite/composite_credentials.cc +5 -5
- data/src/core/lib/security/credentials/composite/composite_credentials.h +4 -3
- data/src/core/lib/security/credentials/credentials.h +10 -20
- data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +6 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.cc +7 -9
- data/src/core/lib/security/credentials/external/external_account_credentials.h +2 -7
- data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +2 -3
- data/src/core/lib/security/credentials/fake/fake_credentials.cc +5 -4
- data/src/core/lib/security/credentials/fake/fake_credentials.h +8 -7
- data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -5
- data/src/core/lib/security/credentials/iam/iam_credentials.cc +16 -19
- data/src/core/lib/security/credentials/iam/iam_credentials.h +6 -5
- data/src/core/lib/security/credentials/jwt/json_token.cc +4 -6
- data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +16 -28
- data/src/core/lib/security/credentials/jwt/jwt_credentials.h +8 -8
- data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +6 -13
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +44 -57
- data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +13 -15
- data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -7
- data/src/core/lib/security/credentials/plugin/plugin_credentials.h +5 -4
- data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +1 -10
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +6 -0
- data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +7 -0
- data/src/core/lib/security/credentials/xds/xds_credentials.h +1 -1
- data/src/core/lib/security/security_connector/security_connector.cc +0 -4
- data/src/core/lib/security/security_connector/security_connector.h +5 -1
- data/src/core/lib/security/security_connector/ssl_utils.cc +14 -24
- data/src/core/lib/security/security_connector/ssl_utils.h +5 -14
- data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +2 -3
- data/src/core/lib/security/transport/auth_filters.h +7 -0
- data/src/core/lib/security/transport/client_auth_filter.cc +53 -33
- data/src/core/lib/security/transport/server_auth_filter.cc +40 -35
- data/src/core/{ext → lib}/service_config/service_config.cc +2 -2
- data/src/core/{ext → lib}/service_config/service_config.h +4 -4
- data/src/core/{ext → lib}/service_config/service_config_call_data.h +5 -5
- data/src/core/{ext → lib}/service_config/service_config_parser.cc +1 -1
- data/src/core/{ext → lib}/service_config/service_config_parser.h +3 -3
- data/src/core/lib/slice/slice.cc +3 -1
- data/src/core/lib/slice/slice.h +43 -13
- data/src/core/lib/slice/slice_intern.cc +3 -101
- data/src/core/lib/slice/slice_internal.h +1 -2
- data/src/core/lib/slice/slice_refcount.h +4 -13
- data/src/core/lib/slice/slice_refcount_base.h +0 -16
- data/src/core/lib/surface/call.cc +140 -382
- data/src/core/lib/surface/call.h +4 -4
- data/src/core/lib/surface/channel.cc +42 -44
- data/src/core/lib/surface/channel.h +4 -4
- data/src/core/lib/surface/init.cc +0 -2
- data/src/core/lib/surface/lame_client.cc +0 -1
- data/src/core/lib/surface/server.cc +12 -29
- data/src/core/lib/surface/server.h +2 -2
- data/src/core/lib/surface/version.cc +2 -2
- data/src/core/lib/transport/error_utils.h +14 -0
- data/src/core/lib/transport/metadata_batch.h +799 -717
- data/src/core/lib/transport/parsed_metadata.cc +2 -0
- data/src/core/lib/transport/parsed_metadata.h +95 -92
- data/src/core/lib/transport/timeout_encoding.cc +200 -66
- data/src/core/lib/transport/timeout_encoding.h +40 -10
- data/src/core/lib/transport/transport.h +1 -1
- data/src/core/lib/transport/transport_op_string.cc +6 -39
- data/src/core/lib/uri/uri_parser.cc +223 -53
- data/src/core/lib/uri/uri_parser.h +36 -23
- data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -3
- data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
- data/src/core/tsi/ssl/session_cache/ssl_session.h +2 -4
- data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +3 -5
- data/src/core/tsi/ssl_transport_security.cc +53 -13
- data/src/core/tsi/ssl_transport_security.h +18 -6
- data/src/ruby/ext/grpc/extconf.rb +10 -3
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +3 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/src/proto/grpc/testing/test_pb.rb +2 -1
- data/third_party/abseil-cpp/absl/base/internal/fast_type_id.h +48 -0
- data/third_party/abseil-cpp/absl/random/bernoulli_distribution.h +200 -0
- data/third_party/abseil-cpp/absl/random/beta_distribution.h +427 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.cc +98 -0
- data/third_party/abseil-cpp/absl/random/discrete_distribution.h +247 -0
- data/third_party/abseil-cpp/absl/random/distributions.h +452 -0
- data/third_party/abseil-cpp/absl/random/exponential_distribution.h +165 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.cc +104 -0
- data/third_party/abseil-cpp/absl/random/gaussian_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/internal/distribution_caller.h +92 -0
- data/third_party/abseil-cpp/absl/random/internal/fast_uniform_bits.h +268 -0
- data/third_party/abseil-cpp/absl/random/internal/fastmath.h +57 -0
- data/third_party/abseil-cpp/absl/random/internal/generate_real.h +144 -0
- data/third_party/abseil-cpp/absl/random/internal/iostream_state_saver.h +245 -0
- data/third_party/abseil-cpp/absl/random/internal/nonsecure_base.h +150 -0
- data/third_party/abseil-cpp/absl/random/internal/pcg_engine.h +308 -0
- data/third_party/abseil-cpp/absl/random/internal/platform.h +171 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.cc +253 -0
- data/third_party/abseil-cpp/absl/random/internal/pool_urbg.h +131 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.cc +91 -0
- data/third_party/abseil-cpp/absl/random/internal/randen.h +102 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.cc +221 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_detect.h +33 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_engine.h +239 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc +526 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_hwaes.h +50 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc +462 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.cc +471 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_slow.h +40 -0
- data/third_party/abseil-cpp/absl/random/internal/randen_traits.h +88 -0
- data/third_party/abseil-cpp/absl/random/internal/salted_seed_seq.h +167 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.cc +267 -0
- data/third_party/abseil-cpp/absl/random/internal/seed_material.h +104 -0
- data/third_party/abseil-cpp/absl/random/internal/traits.h +101 -0
- data/third_party/abseil-cpp/absl/random/internal/uniform_helper.h +244 -0
- data/third_party/abseil-cpp/absl/random/internal/wide_multiply.h +111 -0
- data/third_party/abseil-cpp/absl/random/log_uniform_int_distribution.h +257 -0
- data/third_party/abseil-cpp/absl/random/poisson_distribution.h +258 -0
- data/third_party/abseil-cpp/absl/random/random.h +189 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.cc +46 -0
- data/third_party/abseil-cpp/absl/random/seed_gen_exception.h +55 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.cc +29 -0
- data/third_party/abseil-cpp/absl/random/seed_sequences.h +110 -0
- data/third_party/abseil-cpp/absl/random/uniform_int_distribution.h +275 -0
- data/third_party/abseil-cpp/absl/random/uniform_real_distribution.h +202 -0
- data/third_party/abseil-cpp/absl/random/zipf_distribution.h +271 -0
- data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -0
- data/third_party/boringssl-with-bazel/src/crypto/base64/base64.c +13 -0
- data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +21 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +12 -0
- data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +1 -2
- data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +2 -2
- data/third_party/boringssl-with-bazel/src/crypto/mem.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c +29 -0
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +0 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c +1 -1
- data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/base64.h +8 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +13 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +10 -0
- data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +1 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +9 -4
- data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +6 -1
- data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +23 -2
- data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +4 -0
- data/third_party/xxhash/xxhash.h +607 -352
- metadata +149 -77
- data/src/core/ext/transport/chttp2/transport/hpack_encoder_index.h +0 -107
- data/src/core/ext/transport/chttp2/transport/hpack_utils.cc +0 -46
- data/src/core/ext/transport/chttp2/transport/popularity_count.h +0 -60
- data/src/core/lib/compression/algorithm_metadata.h +0 -62
- data/src/core/lib/compression/compression_args.cc +0 -140
- data/src/core/lib/compression/compression_args.h +0 -58
- data/src/core/lib/compression/stream_compression.cc +0 -81
- data/src/core/lib/compression/stream_compression.h +0 -117
- data/src/core/lib/compression/stream_compression_gzip.cc +0 -231
- data/src/core/lib/compression/stream_compression_gzip.h +0 -28
- data/src/core/lib/compression/stream_compression_identity.cc +0 -91
- data/src/core/lib/compression/stream_compression_identity.h +0 -29
- data/src/core/lib/security/credentials/credentials_metadata.cc +0 -61
- data/src/core/lib/slice/static_slice.cc +0 -377
- data/src/core/lib/slice/static_slice.h +0 -300
- data/src/core/lib/transport/metadata.cc +0 -714
- data/src/core/lib/transport/metadata.h +0 -449
- data/src/core/lib/transport/metadata_batch.cc +0 -99
- data/src/core/lib/transport/static_metadata.cc +0 -1032
- data/src/core/lib/transport/static_metadata.h +0 -322
- data/src/core/lib/transport/status_metadata.cc +0 -63
- data/src/core/lib/transport/status_metadata.h +0 -48
@@ -1,60 +0,0 @@
|
|
1
|
-
// Copyright 2021 gRPC authors.
|
2
|
-
//
|
3
|
-
// Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
// you may not use this file except in compliance with the License.
|
5
|
-
// You may obtain a copy of the License at
|
6
|
-
//
|
7
|
-
// http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
//
|
9
|
-
// Unless required by applicable law or agreed to in writing, software
|
10
|
-
// distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
// See the License for the specific language governing permissions and
|
13
|
-
// limitations under the License.
|
14
|
-
|
15
|
-
#ifndef GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_POPULARITY_COUNT_H
|
16
|
-
#define GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_POPULARITY_COUNT_H
|
17
|
-
|
18
|
-
#include <grpc/support/port_platform.h>
|
19
|
-
|
20
|
-
namespace grpc_core {
|
21
|
-
|
22
|
-
// filter tables for elems: this tables provides an approximate
|
23
|
-
// popularity count for particular hashes, and are used to determine whether
|
24
|
-
// a new literal should be added to the compression table or not.
|
25
|
-
// They track a single integer that counts how often a particular value has
|
26
|
-
// been seen. When that count reaches max (255), all values are halved. */
|
27
|
-
template <uint8_t kElems>
|
28
|
-
class PopularityCount {
|
29
|
-
public:
|
30
|
-
PopularityCount() : sum_{0}, elems_{} {}
|
31
|
-
|
32
|
-
// increment a filter count, halve all counts if one element reaches max
|
33
|
-
// return true if this element seems to be popular, false otherwise
|
34
|
-
bool AddElement(uint8_t idx) {
|
35
|
-
elems_[idx]++;
|
36
|
-
if (GPR_LIKELY(elems_[idx] < 255)) {
|
37
|
-
sum_++;
|
38
|
-
} else {
|
39
|
-
HalveFilter();
|
40
|
-
}
|
41
|
-
return elems_[idx] >= 2 * sum_ / kElems;
|
42
|
-
}
|
43
|
-
|
44
|
-
private:
|
45
|
-
// halve all counts because an element reached max
|
46
|
-
void HalveFilter() {
|
47
|
-
sum_ = 0;
|
48
|
-
for (int i = 0; i < kElems; i++) {
|
49
|
-
elems_[i] /= 2;
|
50
|
-
sum_ += elems_[i];
|
51
|
-
}
|
52
|
-
}
|
53
|
-
|
54
|
-
uint32_t sum_;
|
55
|
-
uint8_t elems_[kElems];
|
56
|
-
};
|
57
|
-
|
58
|
-
} // namespace grpc_core
|
59
|
-
|
60
|
-
#endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_POPULARITY_COUNT_H */
|
@@ -1,62 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#ifndef GRPC_CORE_LIB_COMPRESSION_ALGORITHM_METADATA_H
|
20
|
-
#define GRPC_CORE_LIB_COMPRESSION_ALGORITHM_METADATA_H
|
21
|
-
|
22
|
-
#include <grpc/support/port_platform.h>
|
23
|
-
|
24
|
-
#include <grpc/compression.h>
|
25
|
-
|
26
|
-
#include "src/core/lib/compression/compression_internal.h"
|
27
|
-
#include "src/core/lib/transport/metadata.h"
|
28
|
-
|
29
|
-
/** Return compression algorithm based metadata value */
|
30
|
-
grpc_slice grpc_compression_algorithm_slice(
|
31
|
-
grpc_compression_algorithm algorithm);
|
32
|
-
|
33
|
-
/** Find compression algorithm based on passed in mdstr - returns
|
34
|
-
* GRPC_COMPRESS_ALGORITHM_COUNT on failure */
|
35
|
-
grpc_compression_algorithm grpc_compression_algorithm_from_slice(
|
36
|
-
const grpc_slice& str);
|
37
|
-
|
38
|
-
/** Return compression algorithm based metadata element */
|
39
|
-
grpc_mdelem grpc_compression_encoding_mdelem(
|
40
|
-
grpc_compression_algorithm algorithm);
|
41
|
-
|
42
|
-
/** Return message compression algorithm based metadata element (grpc-encoding:
|
43
|
-
* xxx) */
|
44
|
-
grpc_mdelem grpc_message_compression_encoding_mdelem(
|
45
|
-
grpc_message_compression_algorithm algorithm);
|
46
|
-
|
47
|
-
/** Return stream compression algorithm based metadata element
|
48
|
-
* (content-encoding: xxx) */
|
49
|
-
grpc_mdelem grpc_stream_compression_encoding_mdelem(
|
50
|
-
grpc_stream_compression_algorithm algorithm);
|
51
|
-
|
52
|
-
/** Find compression algorithm based on passed in mdstr - returns
|
53
|
-
* GRPC_COMPRESS_ALGORITHM_COUNT on failure */
|
54
|
-
grpc_message_compression_algorithm
|
55
|
-
grpc_message_compression_algorithm_from_slice(const grpc_slice& str);
|
56
|
-
|
57
|
-
/** Find stream compression algorithm based on passed in mdstr - returns
|
58
|
-
* GRPC_STREAM_COMPRESS_ALGORITHM_COUNT on failure */
|
59
|
-
grpc_stream_compression_algorithm grpc_stream_compression_algorithm_from_slice(
|
60
|
-
const grpc_slice& str);
|
61
|
-
|
62
|
-
#endif /* GRPC_CORE_LIB_COMPRESSION_ALGORITHM_METADATA_H */
|
@@ -1,140 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#include <grpc/support/port_platform.h>
|
20
|
-
|
21
|
-
#include "src/core/lib/compression/compression_args.h"
|
22
|
-
|
23
|
-
#include <limits.h>
|
24
|
-
#include <string.h>
|
25
|
-
|
26
|
-
#include <grpc/compression.h>
|
27
|
-
#include <grpc/grpc.h>
|
28
|
-
#include <grpc/support/alloc.h>
|
29
|
-
#include <grpc/support/log.h>
|
30
|
-
#include <grpc/support/string_util.h>
|
31
|
-
|
32
|
-
#include "src/core/lib/channel/channel_args.h"
|
33
|
-
#include "src/core/lib/gpr/string.h"
|
34
|
-
#include "src/core/lib/gpr/useful.h"
|
35
|
-
|
36
|
-
grpc_compression_algorithm
|
37
|
-
grpc_channel_args_get_channel_default_compression_algorithm(
|
38
|
-
const grpc_channel_args* a) {
|
39
|
-
size_t i;
|
40
|
-
if (a == nullptr) return GRPC_COMPRESS_NONE;
|
41
|
-
for (i = 0; i < a->num_args; ++i) {
|
42
|
-
if (a->args[i].type == GRPC_ARG_INTEGER &&
|
43
|
-
!strcmp(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM, a->args[i].key)) {
|
44
|
-
grpc_compression_algorithm default_algorithm =
|
45
|
-
static_cast<grpc_compression_algorithm>(a->args[i].value.integer);
|
46
|
-
return default_algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT
|
47
|
-
? default_algorithm
|
48
|
-
: GRPC_COMPRESS_NONE;
|
49
|
-
}
|
50
|
-
}
|
51
|
-
return GRPC_COMPRESS_NONE;
|
52
|
-
}
|
53
|
-
|
54
|
-
const grpc_channel_args*
|
55
|
-
grpc_channel_args_set_channel_default_compression_algorithm(
|
56
|
-
const grpc_channel_args* a, grpc_compression_algorithm algorithm) {
|
57
|
-
GPR_ASSERT(algorithm < GRPC_COMPRESS_ALGORITHMS_COUNT);
|
58
|
-
grpc_arg tmp;
|
59
|
-
tmp.type = GRPC_ARG_INTEGER;
|
60
|
-
tmp.key = const_cast<char*>(GRPC_COMPRESSION_CHANNEL_DEFAULT_ALGORITHM);
|
61
|
-
tmp.value.integer = algorithm;
|
62
|
-
return grpc_channel_args_copy_and_add(a, &tmp, 1);
|
63
|
-
}
|
64
|
-
|
65
|
-
/** Returns 1 if the argument for compression algorithm's enabled states bitset
|
66
|
-
* was found in \a a, returning the arg's value in \a states. Otherwise, returns
|
67
|
-
* 0. */
|
68
|
-
static int find_compression_algorithm_states_bitset(const grpc_channel_args* a,
|
69
|
-
int** states_arg) {
|
70
|
-
if (a != nullptr) {
|
71
|
-
size_t i;
|
72
|
-
for (i = 0; i < a->num_args; ++i) {
|
73
|
-
if (a->args[i].type == GRPC_ARG_INTEGER &&
|
74
|
-
!strcmp(GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET,
|
75
|
-
a->args[i].key)) {
|
76
|
-
*states_arg = &a->args[i].value.integer;
|
77
|
-
**states_arg =
|
78
|
-
(**states_arg & ((1 << GRPC_COMPRESS_ALGORITHMS_COUNT) - 1)) |
|
79
|
-
0x1; /* forcefully enable support for no compression */
|
80
|
-
return 1;
|
81
|
-
}
|
82
|
-
}
|
83
|
-
}
|
84
|
-
return 0; /* GPR_FALSE */
|
85
|
-
}
|
86
|
-
|
87
|
-
const grpc_channel_args* grpc_channel_args_compression_algorithm_set_state(
|
88
|
-
const grpc_channel_args** a, grpc_compression_algorithm algorithm,
|
89
|
-
int state) {
|
90
|
-
int* states_arg = nullptr;
|
91
|
-
const grpc_channel_args* result = *a;
|
92
|
-
const int states_arg_found =
|
93
|
-
find_compression_algorithm_states_bitset(*a, &states_arg);
|
94
|
-
|
95
|
-
if (grpc_channel_args_get_channel_default_compression_algorithm(*a) ==
|
96
|
-
algorithm &&
|
97
|
-
state == 0) {
|
98
|
-
const char* algo_name = nullptr;
|
99
|
-
GPR_ASSERT(grpc_compression_algorithm_name(algorithm, &algo_name) != 0);
|
100
|
-
gpr_log(GPR_ERROR,
|
101
|
-
"Tried to disable default compression algorithm '%s'. The "
|
102
|
-
"operation has been ignored.",
|
103
|
-
algo_name);
|
104
|
-
} else if (states_arg_found) {
|
105
|
-
if (state != 0) {
|
106
|
-
grpc_core::SetBit(reinterpret_cast<unsigned*>(states_arg), algorithm);
|
107
|
-
} else if (algorithm != GRPC_COMPRESS_NONE) {
|
108
|
-
grpc_core::ClearBit(reinterpret_cast<unsigned*>(states_arg), algorithm);
|
109
|
-
}
|
110
|
-
} else {
|
111
|
-
/* create a new arg */
|
112
|
-
grpc_arg tmp;
|
113
|
-
tmp.type = GRPC_ARG_INTEGER;
|
114
|
-
tmp.key =
|
115
|
-
const_cast<char*>(GRPC_COMPRESSION_CHANNEL_ENABLED_ALGORITHMS_BITSET);
|
116
|
-
/* all enabled by default */
|
117
|
-
tmp.value.integer = (1u << GRPC_COMPRESS_ALGORITHMS_COUNT) - 1;
|
118
|
-
if (state != 0) {
|
119
|
-
grpc_core::SetBit(reinterpret_cast<unsigned*>(&tmp.value.integer),
|
120
|
-
algorithm);
|
121
|
-
} else if (algorithm != GRPC_COMPRESS_NONE) {
|
122
|
-
grpc_core::ClearBit(reinterpret_cast<unsigned*>(&tmp.value.integer),
|
123
|
-
algorithm);
|
124
|
-
}
|
125
|
-
result = grpc_channel_args_copy_and_add(*a, &tmp, 1);
|
126
|
-
grpc_channel_args_destroy(*a);
|
127
|
-
*a = result;
|
128
|
-
}
|
129
|
-
return result;
|
130
|
-
}
|
131
|
-
|
132
|
-
uint32_t grpc_channel_args_compression_algorithm_get_states(
|
133
|
-
const grpc_channel_args* a) {
|
134
|
-
int* states_arg;
|
135
|
-
if (find_compression_algorithm_states_bitset(a, &states_arg)) {
|
136
|
-
return static_cast<uint32_t>(*states_arg);
|
137
|
-
} else {
|
138
|
-
return (1u << GRPC_COMPRESS_ALGORITHMS_COUNT) - 1; /* All algs. enabled */
|
139
|
-
}
|
140
|
-
}
|
@@ -1,58 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2015 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#ifndef GRPC_CORE_LIB_COMPRESSION_COMPRESSION_ARGS_H
|
20
|
-
#define GRPC_CORE_LIB_COMPRESSION_COMPRESSION_ARGS_H
|
21
|
-
|
22
|
-
#include <grpc/support/port_platform.h>
|
23
|
-
|
24
|
-
#include <grpc/compression.h>
|
25
|
-
#include <grpc/impl/codegen/grpc_types.h>
|
26
|
-
|
27
|
-
/** Returns the compression algorithm set in \a a. */
|
28
|
-
grpc_compression_algorithm
|
29
|
-
grpc_channel_args_get_channel_default_compression_algorithm(
|
30
|
-
const grpc_channel_args* a);
|
31
|
-
|
32
|
-
/** Returns a channel arg instance with compression enabled. If \a a is
|
33
|
-
* non-NULL, its args are copied. N.B. GRPC_COMPRESS_NONE disables compression
|
34
|
-
* for the channel. */
|
35
|
-
const grpc_channel_args*
|
36
|
-
grpc_channel_args_set_channel_default_compression_algorithm(
|
37
|
-
const grpc_channel_args* a, grpc_compression_algorithm algorithm);
|
38
|
-
|
39
|
-
/** Sets the support for the given compression algorithm. By default, all
|
40
|
-
* compression algorithms are enabled. It's an error to disable an algorithm set
|
41
|
-
* by grpc_channel_args_set_compression_algorithm.
|
42
|
-
*
|
43
|
-
* Returns an instance with the updated algorithm states. The \a a pointer is
|
44
|
-
* modified to point to the returned instance (which may be different from the
|
45
|
-
* input value of \a a). */
|
46
|
-
const grpc_channel_args* grpc_channel_args_compression_algorithm_set_state(
|
47
|
-
const grpc_channel_args** a, grpc_compression_algorithm algorithm,
|
48
|
-
int state);
|
49
|
-
|
50
|
-
/** Returns the bitset representing the support state (true for enabled, false
|
51
|
-
* for disabled) for compression algorithms.
|
52
|
-
*
|
53
|
-
* The i-th bit of the returned bitset corresponds to the i-th entry in the
|
54
|
-
* grpc_compression_algorithm enum. */
|
55
|
-
uint32_t grpc_channel_args_compression_algorithm_get_states(
|
56
|
-
const grpc_channel_args* a);
|
57
|
-
|
58
|
-
#endif /* GRPC_CORE_LIB_COMPRESSION_COMPRESSION_ARGS_H */
|
@@ -1,81 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2017 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#include <grpc/support/port_platform.h>
|
20
|
-
|
21
|
-
#include "src/core/lib/compression/stream_compression.h"
|
22
|
-
|
23
|
-
#include <grpc/support/log.h>
|
24
|
-
|
25
|
-
#include "src/core/lib/compression/stream_compression_gzip.h"
|
26
|
-
#include "src/core/lib/slice/slice_utils.h"
|
27
|
-
|
28
|
-
extern const grpc_stream_compression_vtable
|
29
|
-
grpc_stream_compression_identity_vtable;
|
30
|
-
|
31
|
-
bool grpc_stream_compress(grpc_stream_compression_context* ctx,
|
32
|
-
grpc_slice_buffer* in, grpc_slice_buffer* out,
|
33
|
-
size_t* output_size, size_t max_output_size,
|
34
|
-
grpc_stream_compression_flush flush) {
|
35
|
-
return ctx->vtable->compress(ctx, in, out, output_size, max_output_size,
|
36
|
-
flush);
|
37
|
-
}
|
38
|
-
|
39
|
-
bool grpc_stream_decompress(grpc_stream_compression_context* ctx,
|
40
|
-
grpc_slice_buffer* in, grpc_slice_buffer* out,
|
41
|
-
size_t* output_size, size_t max_output_size,
|
42
|
-
bool* end_of_context) {
|
43
|
-
return ctx->vtable->decompress(ctx, in, out, output_size, max_output_size,
|
44
|
-
end_of_context);
|
45
|
-
}
|
46
|
-
|
47
|
-
grpc_stream_compression_context* grpc_stream_compression_context_create(
|
48
|
-
grpc_stream_compression_method method) {
|
49
|
-
switch (method) {
|
50
|
-
case GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS:
|
51
|
-
case GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS:
|
52
|
-
return grpc_stream_compression_identity_vtable.context_create(method);
|
53
|
-
case GRPC_STREAM_COMPRESSION_GZIP_COMPRESS:
|
54
|
-
case GRPC_STREAM_COMPRESSION_GZIP_DECOMPRESS:
|
55
|
-
return grpc_stream_compression_gzip_vtable.context_create(method);
|
56
|
-
default:
|
57
|
-
gpr_log(GPR_ERROR, "Unknown stream compression method: %d", method);
|
58
|
-
return nullptr;
|
59
|
-
}
|
60
|
-
}
|
61
|
-
|
62
|
-
void grpc_stream_compression_context_destroy(
|
63
|
-
grpc_stream_compression_context* ctx) {
|
64
|
-
ctx->vtable->context_destroy(ctx);
|
65
|
-
}
|
66
|
-
|
67
|
-
int grpc_stream_compression_method_parse(
|
68
|
-
grpc_slice value, bool is_compress,
|
69
|
-
grpc_stream_compression_method* method) {
|
70
|
-
if (grpc_slice_eq_static_interned(value, GRPC_MDSTR_IDENTITY)) {
|
71
|
-
*method = is_compress ? GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS
|
72
|
-
: GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS;
|
73
|
-
return 1;
|
74
|
-
} else if (grpc_slice_eq_static_interned(value, GRPC_MDSTR_GZIP)) {
|
75
|
-
*method = is_compress ? GRPC_STREAM_COMPRESSION_GZIP_COMPRESS
|
76
|
-
: GRPC_STREAM_COMPRESSION_GZIP_DECOMPRESS;
|
77
|
-
return 1;
|
78
|
-
} else {
|
79
|
-
return 0;
|
80
|
-
}
|
81
|
-
}
|
@@ -1,117 +0,0 @@
|
|
1
|
-
/*
|
2
|
-
*
|
3
|
-
* Copyright 2017 gRPC authors.
|
4
|
-
*
|
5
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
-
* you may not use this file except in compliance with the License.
|
7
|
-
* You may obtain a copy of the License at
|
8
|
-
*
|
9
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
10
|
-
*
|
11
|
-
* Unless required by applicable law or agreed to in writing, software
|
12
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
-
* See the License for the specific language governing permissions and
|
15
|
-
* limitations under the License.
|
16
|
-
*
|
17
|
-
*/
|
18
|
-
|
19
|
-
#ifndef GRPC_CORE_LIB_COMPRESSION_STREAM_COMPRESSION_H
|
20
|
-
#define GRPC_CORE_LIB_COMPRESSION_STREAM_COMPRESSION_H
|
21
|
-
|
22
|
-
#include <grpc/support/port_platform.h>
|
23
|
-
|
24
|
-
#include <stdbool.h>
|
25
|
-
|
26
|
-
#include <zlib.h>
|
27
|
-
|
28
|
-
#include <grpc/slice_buffer.h>
|
29
|
-
|
30
|
-
#include "src/core/lib/transport/static_metadata.h"
|
31
|
-
|
32
|
-
typedef struct grpc_stream_compression_vtable grpc_stream_compression_vtable;
|
33
|
-
|
34
|
-
/* Stream compression/decompression context */
|
35
|
-
typedef struct grpc_stream_compression_context {
|
36
|
-
const grpc_stream_compression_vtable* vtable;
|
37
|
-
} grpc_stream_compression_context;
|
38
|
-
|
39
|
-
typedef enum grpc_stream_compression_method {
|
40
|
-
GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS = 0,
|
41
|
-
GRPC_STREAM_COMPRESSION_IDENTITY_DECOMPRESS,
|
42
|
-
GRPC_STREAM_COMPRESSION_GZIP_COMPRESS,
|
43
|
-
GRPC_STREAM_COMPRESSION_GZIP_DECOMPRESS,
|
44
|
-
GRPC_STREAM_COMPRESSION_METHOD_COUNT
|
45
|
-
} grpc_stream_compression_method;
|
46
|
-
|
47
|
-
typedef enum grpc_stream_compression_flush {
|
48
|
-
GRPC_STREAM_COMPRESSION_FLUSH_NONE = 0,
|
49
|
-
GRPC_STREAM_COMPRESSION_FLUSH_SYNC,
|
50
|
-
GRPC_STREAM_COMPRESSION_FLUSH_FINISH,
|
51
|
-
GRPC_STREAM_COMPRESSION_FLUSH_COUNT
|
52
|
-
} grpc_stream_compression_flush;
|
53
|
-
|
54
|
-
struct grpc_stream_compression_vtable {
|
55
|
-
bool (*compress)(grpc_stream_compression_context* ctx, grpc_slice_buffer* in,
|
56
|
-
grpc_slice_buffer* out, size_t* output_size,
|
57
|
-
size_t max_output_size, grpc_stream_compression_flush flush);
|
58
|
-
bool (*decompress)(grpc_stream_compression_context* ctx,
|
59
|
-
grpc_slice_buffer* in, grpc_slice_buffer* out,
|
60
|
-
size_t* output_size, size_t max_output_size,
|
61
|
-
bool* end_of_context);
|
62
|
-
grpc_stream_compression_context* (*context_create)(
|
63
|
-
grpc_stream_compression_method method);
|
64
|
-
void (*context_destroy)(grpc_stream_compression_context* ctx);
|
65
|
-
};
|
66
|
-
|
67
|
-
/**
|
68
|
-
* Compress bytes provided in \a in with a given context, with an optional flush
|
69
|
-
* at the end of compression. Emits at most \a max_output_size compressed bytes
|
70
|
-
* into \a out. If all the bytes in input buffer \a in are depleted and \a flush
|
71
|
-
* is not GRPC_STREAM_COMPRESSION_FLUSH_NONE, the corresponding flush method is
|
72
|
-
* executed. The total number of bytes emitted is outputted in \a output_size.
|
73
|
-
*
|
74
|
-
* A SYNC flush indicates that the entire messages in \a in can be decompressed
|
75
|
-
* from \a out. A FINISH flush implies a SYNC flush, and that any further
|
76
|
-
* compression will not be dependent on the state of the current context and any
|
77
|
-
* previous compressed bytes. It allows corresponding decompression context to
|
78
|
-
* be dropped when reaching this boundary.
|
79
|
-
*/
|
80
|
-
bool grpc_stream_compress(grpc_stream_compression_context* ctx,
|
81
|
-
grpc_slice_buffer* in, grpc_slice_buffer* out,
|
82
|
-
size_t* output_size, size_t max_output_size,
|
83
|
-
grpc_stream_compression_flush flush);
|
84
|
-
|
85
|
-
/**
|
86
|
-
* Decompress bytes provided in \a in with a given context. Emits at most \a
|
87
|
-
* max_output_size decompressed bytes into \a out. If decompression process
|
88
|
-
* reached the end of a gzip stream, \a end_of_context is set to true; otherwise
|
89
|
-
* it is set to false. The total number of bytes emitted is outputted in \a
|
90
|
-
* output_size.
|
91
|
-
*/
|
92
|
-
bool grpc_stream_decompress(grpc_stream_compression_context* ctx,
|
93
|
-
grpc_slice_buffer* in, grpc_slice_buffer* out,
|
94
|
-
size_t* output_size, size_t max_output_size,
|
95
|
-
bool* end_of_context);
|
96
|
-
|
97
|
-
/**
|
98
|
-
* Creates a stream compression context. \a pending_bytes_buffer is the input
|
99
|
-
* buffer for compression/decompression operations. \a method specifies whether
|
100
|
-
* the context is for compression or decompression.
|
101
|
-
*/
|
102
|
-
grpc_stream_compression_context* grpc_stream_compression_context_create(
|
103
|
-
grpc_stream_compression_method method);
|
104
|
-
|
105
|
-
/**
|
106
|
-
* Destroys a stream compression context.
|
107
|
-
*/
|
108
|
-
void grpc_stream_compression_context_destroy(
|
109
|
-
grpc_stream_compression_context* ctx);
|
110
|
-
|
111
|
-
/**
|
112
|
-
* Parse stream compression method based on algorithm name
|
113
|
-
*/
|
114
|
-
int grpc_stream_compression_method_parse(
|
115
|
-
grpc_slice value, bool is_compress, grpc_stream_compression_method* method);
|
116
|
-
|
117
|
-
#endif // GRPC_CORE_LIB_COMPRESSION_STREAM_COMPRESSION_H
|