awesome-grpc-that-works 0.12.2 → 0.14.0.dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/Makefile +5783 -22121
- data/include/grpc/byte_buffer.h +2 -83
- data/include/grpc/census.h +173 -121
- data/include/grpc/compression.h +14 -38
- data/include/grpc/grpc.h +85 -434
- data/include/grpc/grpc_security.h +76 -46
- data/include/grpc/grpc_zookeeper.h +1 -1
- data/include/grpc/impl/codegen/alloc.h +74 -0
- data/include/grpc/impl/codegen/atm.h +92 -0
- data/include/grpc/impl/codegen/atm_gcc_atomic.h +72 -0
- data/include/grpc/impl/codegen/atm_gcc_sync.h +87 -0
- data/include/grpc/impl/codegen/atm_win32.h +125 -0
- data/include/grpc/impl/codegen/byte_buffer.h +121 -0
- data/include/grpc/impl/codegen/compression_types.h +73 -0
- data/include/grpc/impl/codegen/connectivity_state.h +59 -0
- data/include/grpc/impl/codegen/grpc_types.h +378 -0
- data/include/grpc/impl/codegen/log.h +110 -0
- data/include/grpc/impl/codegen/port_platform.h +370 -0
- data/include/grpc/impl/codegen/propagation_bits.h +67 -0
- data/include/grpc/impl/codegen/slice.h +182 -0
- data/include/grpc/impl/codegen/slice_buffer.h +105 -0
- data/include/grpc/impl/codegen/status.h +163 -0
- data/include/grpc/impl/codegen/sync.h +316 -0
- data/include/grpc/impl/codegen/sync_generic.h +55 -0
- data/{src/core/census/context.h → include/grpc/impl/codegen/sync_posix.h} +11 -11
- data/include/grpc/impl/codegen/sync_win32.h +49 -0
- data/include/grpc/impl/codegen/time.h +130 -0
- data/include/grpc/status.h +2 -126
- data/include/grpc/support/alloc.h +2 -35
- data/include/grpc/support/atm.h +2 -55
- data/include/grpc/support/atm_gcc_atomic.h +5 -38
- data/include/grpc/support/atm_gcc_sync.h +2 -50
- data/include/grpc/support/atm_win32.h +2 -88
- data/include/grpc/support/avl.h +10 -9
- data/include/grpc/support/cmdline.h +15 -13
- data/include/grpc/support/cpu.h +5 -3
- data/include/grpc/support/histogram.h +23 -20
- data/include/grpc/support/host_port.h +5 -3
- data/include/grpc/support/log.h +2 -71
- data/include/grpc/support/log_win32.h +2 -2
- data/include/grpc/support/port_platform.h +2 -319
- data/include/grpc/support/slice.h +2 -145
- data/include/grpc/support/slice_buffer.h +2 -65
- data/include/grpc/support/string_util.h +3 -3
- data/include/grpc/support/subprocess.h +8 -6
- data/include/grpc/support/sync.h +2 -278
- data/include/grpc/support/sync_generic.h +2 -18
- data/include/grpc/support/sync_posix.h +2 -10
- data/include/grpc/support/sync_win32.h +2 -12
- data/include/grpc/support/thd.h +11 -11
- data/include/grpc/support/time.h +2 -91
- data/include/grpc/support/tls.h +1 -1
- data/include/grpc/support/tls_gcc.h +1 -1
- data/include/grpc/support/tls_msvc.h +1 -1
- data/include/grpc/support/tls_pthread.h +2 -2
- data/include/grpc/support/useful.h +3 -1
- data/src/boringssl/err_data.c +1252 -0
- data/src/core/census/context.c +471 -8
- data/src/core/census/grpc_filter.c +5 -5
- data/src/core/census/initialize.c +4 -7
- data/src/core/census/mlog.c +600 -0
- data/src/core/census/mlog.h +95 -0
- data/src/core/census/operation.c +2 -2
- data/src/core/census/placeholders.c +109 -0
- data/src/core/census/rpc_metric_id.h +6 -6
- data/src/core/census/tracing.c +1 -1
- data/src/core/channel/channel_args.c +71 -9
- data/src/core/channel/channel_args.h +7 -1
- data/src/core/channel/channel_stack.c +1 -1
- data/src/core/channel/client_channel.c +33 -30
- data/src/core/channel/client_uchannel.c +3 -3
- data/src/core/channel/compress_filter.c +8 -8
- data/src/core/channel/http_client_filter.c +4 -4
- data/src/core/channel/http_server_filter.c +11 -11
- data/src/core/channel/subchannel_call_holder.c +11 -11
- data/src/core/client_config/connector.c +3 -2
- data/src/core/client_config/connector.h +2 -2
- data/src/core/client_config/lb_policies/load_balancer_api.c +163 -0
- data/src/core/client_config/lb_policies/load_balancer_api.h +85 -0
- data/src/core/client_config/lb_policies/pick_first.c +57 -40
- data/src/core/client_config/lb_policies/round_robin.c +14 -15
- data/src/core/client_config/lb_policy.c +3 -3
- data/src/core/client_config/lb_policy.h +3 -2
- data/src/core/client_config/resolvers/dns_resolver.c +3 -3
- data/src/core/client_config/resolvers/sockaddr_resolver.c +5 -5
- data/src/core/client_config/subchannel.c +84 -39
- data/src/core/client_config/subchannel.h +15 -6
- data/src/core/client_config/subchannel_index.c +261 -0
- data/src/core/client_config/subchannel_index.h +77 -0
- data/src/core/compression/{algorithm.c → compression_algorithm.c} +3 -3
- data/src/core/httpcli/format_request.c +1 -1
- data/src/core/httpcli/httpcli.c +18 -16
- data/src/core/httpcli/httpcli.h +3 -2
- data/src/core/httpcli/httpcli_security_connector.c +9 -10
- data/src/core/httpcli/parser.c +7 -7
- data/src/core/httpcli/parser.h +1 -1
- data/src/core/iomgr/closure.c +7 -7
- data/src/core/iomgr/closure.h +6 -5
- data/src/core/iomgr/exec_ctx.c +12 -8
- data/src/core/iomgr/exec_ctx.h +12 -5
- data/src/core/iomgr/executor.c +4 -4
- data/src/core/iomgr/executor.h +2 -2
- data/src/core/iomgr/fd_posix.c +32 -19
- data/src/core/iomgr/fd_posix.h +7 -4
- data/src/core/iomgr/iocp_windows.c +7 -9
- data/src/core/iomgr/iomgr.c +2 -2
- data/src/core/iomgr/pollset.h +9 -10
- data/src/core/iomgr/pollset_multipoller_with_epoll.c +71 -5
- data/src/core/iomgr/pollset_multipoller_with_poll_posix.c +9 -5
- data/src/core/iomgr/pollset_posix.c +44 -49
- data/src/core/iomgr/pollset_posix.h +14 -8
- data/src/core/iomgr/pollset_set.h +3 -9
- data/src/core/iomgr/pollset_set_posix.c +23 -3
- data/src/core/iomgr/pollset_set_posix.h +2 -18
- data/src/core/iomgr/pollset_set_windows.c +3 -3
- data/src/core/iomgr/pollset_set_windows.h +2 -2
- data/src/core/iomgr/pollset_windows.c +29 -37
- data/src/core/iomgr/pollset_windows.h +1 -5
- data/src/core/iomgr/resolve_address_posix.c +2 -2
- data/src/core/iomgr/resolve_address_windows.c +2 -2
- data/src/core/iomgr/sockaddr_utils.c +6 -6
- data/src/core/iomgr/sockaddr_win32.h +1 -6
- data/src/core/iomgr/tcp_client_posix.c +14 -12
- data/src/core/iomgr/tcp_client_windows.c +4 -4
- data/src/core/iomgr/tcp_posix.c +18 -10
- data/src/core/iomgr/tcp_posix.h +7 -1
- data/src/core/iomgr/tcp_server.h +40 -20
- data/src/core/iomgr/tcp_server_posix.c +106 -49
- data/src/core/iomgr/tcp_server_windows.c +98 -49
- data/src/core/iomgr/tcp_windows.c +11 -15
- data/src/core/iomgr/timer.c +10 -11
- data/src/core/iomgr/timer.h +22 -2
- data/src/core/iomgr/timer_heap.c +10 -10
- data/src/core/iomgr/timer_heap.h +2 -2
- data/src/core/iomgr/udp_server.c +7 -16
- data/src/core/iomgr/udp_server.h +2 -9
- data/src/core/iomgr/workqueue.h +2 -4
- data/src/core/iomgr/workqueue_posix.c +4 -3
- data/src/core/iomgr/workqueue_posix.h +3 -1
- data/src/core/json/json_reader.c +11 -12
- data/src/core/json/json_reader.h +4 -4
- data/src/core/json/json_string.c +19 -19
- data/src/core/json/json_writer.c +7 -9
- data/src/core/profiling/basic_timers.c +1 -1
- data/src/core/proto/grpc/lb/v0/load_balancer.pb.c +119 -0
- data/src/core/proto/grpc/lb/v0/load_balancer.pb.h +182 -0
- data/src/core/security/{base64.c → b64.c} +10 -10
- data/src/core/security/{base64.h → b64.h} +1 -1
- data/src/core/security/client_auth_filter.c +4 -5
- data/src/core/security/credentials.c +17 -10
- data/src/core/security/credentials.h +3 -3
- data/src/core/security/google_default_credentials.c +27 -22
- data/src/core/security/handshake.c +21 -12
- data/src/core/security/handshake.h +2 -1
- data/src/core/security/json_token.c +14 -8
- data/src/core/security/jwt_verifier.c +4 -3
- data/src/core/security/secure_endpoint.c +16 -16
- data/src/core/security/security_connector.c +131 -81
- data/src/core/security/security_connector.h +47 -27
- data/src/core/security/security_context.c +8 -3
- data/src/core/security/server_auth_filter.c +5 -5
- data/src/core/security/server_secure_chttp2.c +36 -37
- data/src/core/statistics/census_interface.h +2 -2
- data/src/core/statistics/census_rpc_stats.h +3 -3
- data/src/core/support/alloc.c +1 -1
- data/src/core/support/avl.c +2 -2
- data/src/core/support/cpu_posix.c +2 -2
- data/src/core/support/env_linux.c +28 -1
- data/src/core/support/env_win32.c +15 -7
- data/src/core/support/histogram.c +5 -5
- data/src/core/support/{file.c → load_file.c} +2 -2
- data/src/core/support/{file.h → load_file.h} +4 -12
- data/src/core/support/log_posix.c +1 -1
- data/src/core/support/log_win32.c +4 -3
- data/src/core/support/murmur_hash.c +11 -11
- data/src/core/support/murmur_hash.h +1 -1
- data/src/core/support/slice.c +11 -11
- data/src/core/support/slice_buffer.c +6 -6
- data/src/core/support/stack_lockfree.c +20 -10
- data/src/core/support/string.c +15 -15
- data/src/core/support/string.h +5 -5
- data/src/core/support/string_win32.c +5 -5
- data/src/core/support/subprocess_windows.c +141 -0
- data/src/core/support/sync.c +4 -4
- data/src/core/support/sync_posix.c +2 -2
- data/src/core/support/sync_win32.c +10 -5
- data/src/core/support/time.c +29 -29
- data/src/core/support/time_posix.c +15 -6
- data/src/core/support/time_precise.c +2 -2
- data/src/core/support/time_win32.c +18 -9
- data/src/core/support/tls_pthread.c +1 -1
- data/src/core/support/tmpfile.h +55 -0
- data/src/core/support/{file_posix.c → tmpfile_posix.c} +2 -2
- data/src/core/support/{file_win32.c → tmpfile_win32.c} +2 -2
- data/src/core/support/wrap_memcpy.c +53 -0
- data/src/core/surface/alarm.c +84 -0
- data/src/core/surface/byte_buffer_reader.c +1 -1
- data/src/core/surface/call.c +175 -116
- data/src/core/surface/call.h +2 -2
- data/src/core/surface/call_test_only.h +2 -2
- data/src/core/surface/channel.c +9 -9
- data/src/core/surface/channel.h +1 -1
- data/src/core/surface/channel_connectivity.c +3 -3
- data/src/core/surface/channel_create.c +4 -4
- data/src/core/surface/channel_ping.c +2 -2
- data/src/core/surface/completion_queue.c +84 -53
- data/src/core/surface/completion_queue.h +1 -1
- data/src/core/surface/init.c +11 -5
- data/src/core/surface/lame_client.c +2 -3
- data/src/core/surface/secure_channel_create.c +9 -10
- data/src/core/surface/server.c +30 -30
- data/src/core/surface/server_chttp2.c +8 -8
- data/src/core/surface/server_create.c +1 -4
- data/src/core/surface/validate_metadata.c +4 -4
- data/src/core/surface/version.c +2 -2
- data/src/core/transport/byte_stream.c +8 -6
- data/src/core/transport/byte_stream.h +6 -5
- data/src/core/transport/chttp2/bin_encoder.c +29 -29
- data/src/core/transport/chttp2/frame_data.c +29 -26
- data/src/core/transport/chttp2/frame_data.h +6 -6
- data/src/core/transport/chttp2/frame_goaway.c +30 -30
- data/src/core/transport/chttp2/frame_goaway.h +6 -6
- data/src/core/transport/chttp2/frame_ping.c +6 -6
- data/src/core/transport/chttp2/frame_ping.h +5 -5
- data/src/core/transport/chttp2/frame_rst_stream.c +18 -19
- data/src/core/transport/chttp2/frame_rst_stream.h +4 -4
- data/src/core/transport/chttp2/frame_settings.c +30 -30
- data/src/core/transport/chttp2/frame_settings.h +13 -13
- data/src/core/transport/chttp2/frame_window_update.c +17 -18
- data/src/core/transport/chttp2/frame_window_update.h +5 -7
- data/src/core/transport/chttp2/hpack_encoder.c +69 -73
- data/src/core/transport/chttp2/hpack_encoder.h +16 -16
- data/src/core/transport/chttp2/hpack_parser.c +167 -167
- data/src/core/transport/chttp2/hpack_parser.h +16 -16
- data/src/core/transport/chttp2/hpack_table.c +13 -13
- data/src/core/transport/chttp2/hpack_table.h +11 -11
- data/src/core/transport/chttp2/internal.h +103 -87
- data/src/core/transport/chttp2/parsing.c +25 -25
- data/src/core/transport/chttp2/stream_lists.c +38 -1
- data/src/core/transport/chttp2/stream_map.c +13 -14
- data/src/core/transport/chttp2/stream_map.h +6 -7
- data/src/core/transport/chttp2/timeout_encoding.c +19 -16
- data/src/core/transport/chttp2/varint.c +8 -9
- data/src/core/transport/chttp2/varint.h +7 -8
- data/src/core/transport/chttp2/writing.c +25 -22
- data/src/core/transport/chttp2_transport.c +147 -100
- data/src/core/transport/connectivity_state.c +6 -6
- data/src/core/transport/metadata.c +18 -18
- data/src/core/transport/metadata.h +5 -5
- data/src/core/transport/static_metadata.c +32 -33
- data/src/core/transport/static_metadata.h +8 -8
- data/src/core/transport/transport.c +6 -5
- data/src/core/transport/transport.h +17 -1
- data/src/core/tsi/fake_transport_security.c +7 -7
- data/src/core/tsi/ssl_transport_security.c +6 -4
- data/src/core/{iomgr/timer_internal.h → tsi/ssl_types.h} +19 -25
- data/src/ruby/ext/grpc/extconf.rb +52 -14
- data/src/ruby/ext/grpc/rb_byte_buffer.c +3 -1
- data/src/ruby/ext/grpc/rb_call.c +7 -3
- data/src/ruby/ext/grpc/rb_call_credentials.c +4 -0
- data/src/ruby/ext/grpc/rb_channel.c +4 -2
- data/src/ruby/ext/grpc/rb_channel_args.c +3 -1
- data/src/ruby/ext/grpc/rb_channel_credentials.c +3 -1
- data/src/ruby/ext/grpc/rb_completion_queue.c +3 -1
- data/src/ruby/ext/grpc/rb_event_thread.c +5 -0
- data/src/ruby/ext/grpc/rb_grpc.c +28 -19
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +562 -0
- data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +846 -0
- data/src/ruby/ext/grpc/rb_loader.c +72 -0
- data/src/ruby/ext/grpc/rb_loader.h +40 -0
- data/src/ruby/ext/grpc/rb_server.c +3 -1
- data/src/ruby/ext/grpc/rb_server_credentials.c +4 -2
- data/src/ruby/lib/grpc/core/time_consts.rb +2 -2
- data/src/ruby/lib/grpc/errors.rb +2 -2
- data/src/ruby/lib/grpc/generic/bidi_call.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_desc.rb +1 -1
- data/src/ruby/lib/grpc/generic/rpc_server.rb +1 -1
- data/src/ruby/lib/grpc/grpc.rb +34 -0
- data/src/ruby/lib/grpc/version.rb +1 -1
- data/src/ruby/pb/README.md +2 -2
- data/src/ruby/pb/generate_proto_ruby.sh +2 -2
- data/src/ruby/pb/grpc/health/checker.rb +11 -11
- data/src/ruby/pb/grpc/health/v1/health.rb +28 -0
- data/src/ruby/pb/grpc/health/{v1alpha → v1}/health_services.rb +4 -4
- data/src/ruby/spec/client_server_spec.rb +2 -1
- data/src/ruby/spec/pb/health/checker_spec.rb +23 -37
- data/third_party/boringssl/crypto/aes/aes.c +1142 -0
- data/third_party/boringssl/crypto/aes/internal.h +87 -0
- data/third_party/boringssl/crypto/aes/mode_wrappers.c +108 -0
- data/third_party/boringssl/crypto/asn1/a_bitstr.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_bool.c +112 -0
- data/third_party/boringssl/crypto/asn1/a_bytes.c +317 -0
- data/third_party/boringssl/crypto/asn1/a_d2i_fp.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_dup.c +103 -0
- data/third_party/boringssl/crypto/asn1/a_enum.c +183 -0
- data/third_party/boringssl/crypto/asn1/a_gentm.c +255 -0
- data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +154 -0
- data/third_party/boringssl/crypto/asn1/a_int.c +456 -0
- data/third_party/boringssl/crypto/asn1/a_mbstr.c +390 -0
- data/third_party/boringssl/crypto/asn1/a_object.c +412 -0
- data/third_party/boringssl/crypto/asn1/a_octet.c +70 -0
- data/third_party/boringssl/crypto/asn1/a_print.c +119 -0
- data/third_party/boringssl/crypto/asn1/a_strnid.c +286 -0
- data/third_party/boringssl/crypto/asn1/a_time.c +221 -0
- data/third_party/boringssl/crypto/asn1/a_type.c +160 -0
- data/third_party/boringssl/crypto/asn1/a_utctm.c +342 -0
- data/third_party/boringssl/crypto/asn1/a_utf8.c +210 -0
- data/third_party/boringssl/crypto/asn1/asn1_lib.c +510 -0
- data/third_party/boringssl/crypto/asn1/asn1_locl.h +73 -0
- data/third_party/boringssl/crypto/asn1/asn1_par.c +444 -0
- data/third_party/boringssl/crypto/asn1/asn_pack.c +104 -0
- data/third_party/boringssl/crypto/asn1/bio_asn1.c +496 -0
- data/third_party/boringssl/crypto/asn1/bio_ndef.c +254 -0
- data/third_party/boringssl/crypto/asn1/f_enum.c +206 -0
- data/third_party/boringssl/crypto/asn1/f_int.c +210 -0
- data/third_party/boringssl/crypto/asn1/f_string.c +204 -0
- data/third_party/boringssl/crypto/asn1/t_bitst.c +102 -0
- data/third_party/boringssl/crypto/asn1/t_pkey.c +112 -0
- data/third_party/boringssl/crypto/asn1/tasn_dec.c +1342 -0
- data/third_party/boringssl/crypto/asn1/tasn_enc.c +695 -0
- data/third_party/boringssl/crypto/asn1/tasn_fre.c +264 -0
- data/third_party/boringssl/crypto/asn1/tasn_new.c +398 -0
- data/third_party/boringssl/crypto/asn1/tasn_prn.c +642 -0
- data/third_party/boringssl/crypto/asn1/tasn_typ.c +137 -0
- data/third_party/boringssl/crypto/asn1/tasn_utl.c +266 -0
- data/third_party/boringssl/crypto/asn1/x_bignum.c +143 -0
- data/third_party/boringssl/crypto/asn1/x_long.c +182 -0
- data/third_party/boringssl/crypto/base64/base64.c +478 -0
- data/third_party/boringssl/crypto/bio/bio.c +608 -0
- data/third_party/boringssl/crypto/bio/bio_mem.c +327 -0
- data/third_party/boringssl/crypto/bio/buffer.c +496 -0
- data/third_party/boringssl/crypto/bio/connect.c +544 -0
- data/third_party/boringssl/crypto/bio/fd.c +270 -0
- data/third_party/boringssl/crypto/bio/file.c +349 -0
- data/third_party/boringssl/crypto/bio/hexdump.c +192 -0
- data/third_party/boringssl/crypto/bio/internal.h +108 -0
- data/third_party/boringssl/crypto/bio/pair.c +803 -0
- data/third_party/boringssl/crypto/bio/printf.c +119 -0
- data/third_party/boringssl/crypto/bio/socket.c +195 -0
- data/third_party/boringssl/crypto/bio/socket_helper.c +113 -0
- data/third_party/boringssl/crypto/bn/add.c +377 -0
- data/third_party/boringssl/crypto/bn/asm/x86_64-gcc.c +599 -0
- data/third_party/boringssl/crypto/bn/bn.c +341 -0
- data/third_party/boringssl/crypto/bn/bn_asn1.c +93 -0
- data/third_party/boringssl/crypto/bn/cmp.c +200 -0
- data/third_party/boringssl/crypto/bn/convert.c +597 -0
- data/third_party/boringssl/crypto/bn/ctx.c +311 -0
- data/third_party/boringssl/crypto/bn/div.c +625 -0
- data/third_party/boringssl/crypto/bn/exponentiation.c +1544 -0
- data/third_party/boringssl/crypto/bn/gcd.c +711 -0
- data/third_party/boringssl/crypto/bn/generic.c +1019 -0
- data/third_party/boringssl/crypto/bn/internal.h +294 -0
- data/third_party/boringssl/crypto/bn/kronecker.c +175 -0
- data/third_party/boringssl/crypto/bn/montgomery.c +561 -0
- data/third_party/boringssl/crypto/bn/mul.c +888 -0
- data/third_party/boringssl/crypto/bn/prime.c +845 -0
- data/third_party/boringssl/crypto/bn/random.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.c +326 -0
- data/third_party/boringssl/crypto/bn/rsaz_exp.h +56 -0
- data/third_party/boringssl/crypto/bn/shift.c +299 -0
- data/third_party/boringssl/crypto/bn/sqrt.c +505 -0
- data/third_party/boringssl/crypto/buf/buf.c +235 -0
- data/third_party/boringssl/crypto/bytestring/ber.c +221 -0
- data/third_party/boringssl/crypto/bytestring/cbb.c +411 -0
- data/third_party/boringssl/crypto/bytestring/cbs.c +415 -0
- data/third_party/boringssl/crypto/bytestring/internal.h +46 -0
- data/third_party/boringssl/crypto/chacha/chacha_generic.c +140 -0
- data/third_party/boringssl/crypto/chacha/chacha_vec.c +323 -0
- data/third_party/boringssl/crypto/cipher/aead.c +167 -0
- data/third_party/boringssl/crypto/cipher/cipher.c +652 -0
- data/third_party/boringssl/crypto/cipher/derive_key.c +154 -0
- data/third_party/boringssl/crypto/cipher/e_aes.c +1767 -0
- data/third_party/boringssl/crypto/cipher/e_chacha20poly1305.c +311 -0
- data/third_party/boringssl/crypto/cipher/e_des.c +207 -0
- data/third_party/boringssl/crypto/cipher/e_null.c +85 -0
- data/third_party/boringssl/crypto/cipher/e_rc2.c +443 -0
- data/third_party/boringssl/crypto/cipher/e_rc4.c +87 -0
- data/third_party/boringssl/crypto/cipher/e_ssl3.c +463 -0
- data/third_party/boringssl/crypto/cipher/e_tls.c +673 -0
- data/third_party/boringssl/crypto/cipher/internal.h +164 -0
- data/third_party/boringssl/crypto/cipher/tls_cbc.c +495 -0
- data/third_party/boringssl/crypto/cmac/cmac.c +239 -0
- data/third_party/boringssl/crypto/conf/conf.c +778 -0
- data/third_party/boringssl/crypto/conf/conf_def.h +127 -0
- data/third_party/boringssl/crypto/conf/internal.h +31 -0
- data/third_party/boringssl/crypto/cpu-arm.c +199 -0
- data/third_party/boringssl/crypto/cpu-intel.c +261 -0
- data/third_party/boringssl/crypto/crypto.c +140 -0
- data/third_party/boringssl/crypto/curve25519/curve25519.c +4897 -0
- data/third_party/boringssl/crypto/des/des.c +771 -0
- data/third_party/boringssl/crypto/des/internal.h +212 -0
- data/third_party/boringssl/crypto/dh/check.c +180 -0
- data/third_party/boringssl/crypto/dh/dh.c +463 -0
- data/third_party/boringssl/crypto/dh/dh_asn1.c +84 -0
- data/third_party/boringssl/crypto/dh/internal.h +80 -0
- data/third_party/boringssl/crypto/dh/params.c +301 -0
- data/third_party/boringssl/crypto/digest/digest.c +248 -0
- data/third_party/boringssl/crypto/digest/digests.c +321 -0
- data/third_party/boringssl/crypto/digest/internal.h +112 -0
- data/third_party/boringssl/crypto/digest/md32_common.h +322 -0
- data/third_party/boringssl/crypto/directory.h +66 -0
- data/third_party/boringssl/crypto/directory_posix.c +108 -0
- data/third_party/boringssl/crypto/directory_win.c +144 -0
- data/third_party/boringssl/crypto/dsa/dsa.c +908 -0
- data/third_party/boringssl/crypto/dsa/dsa_asn1.c +150 -0
- data/third_party/boringssl/crypto/dsa/internal.h +78 -0
- data/third_party/boringssl/crypto/ec/ec.c +889 -0
- data/third_party/boringssl/crypto/ec/ec_asn1.c +586 -0
- data/third_party/boringssl/crypto/ec/ec_key.c +482 -0
- data/third_party/boringssl/crypto/ec/ec_montgomery.c +280 -0
- data/third_party/boringssl/crypto/ec/internal.h +318 -0
- data/third_party/boringssl/crypto/ec/oct.c +416 -0
- data/third_party/boringssl/crypto/ec/p224-64.c +1305 -0
- data/third_party/boringssl/crypto/ec/p256-64.c +1878 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64-table.h +9548 -0
- data/third_party/boringssl/crypto/ec/p256-x86_64.c +596 -0
- data/third_party/boringssl/crypto/ec/simple.c +1313 -0
- data/third_party/boringssl/crypto/ec/util-64.c +183 -0
- data/third_party/boringssl/crypto/ec/wnaf.c +449 -0
- data/third_party/boringssl/crypto/ecdh/ecdh.c +153 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa.c +496 -0
- data/third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c +240 -0
- data/third_party/boringssl/crypto/engine/engine.c +96 -0
- data/third_party/boringssl/crypto/err/err.c +756 -0
- data/third_party/boringssl/crypto/evp/algorithm.c +153 -0
- data/third_party/boringssl/crypto/evp/digestsign.c +159 -0
- data/third_party/boringssl/crypto/evp/evp.c +411 -0
- data/third_party/boringssl/crypto/evp/evp_asn1.c +179 -0
- data/third_party/boringssl/crypto/evp/evp_ctx.c +477 -0
- data/third_party/boringssl/crypto/evp/internal.h +278 -0
- data/third_party/boringssl/crypto/evp/p_dsa_asn1.c +588 -0
- data/third_party/boringssl/crypto/evp/p_ec.c +283 -0
- data/third_party/boringssl/crypto/evp/p_ec_asn1.c +562 -0
- data/third_party/boringssl/crypto/evp/p_rsa.c +596 -0
- data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +737 -0
- data/third_party/boringssl/crypto/evp/pbkdf.c +151 -0
- data/third_party/boringssl/crypto/evp/sign.c +151 -0
- data/third_party/boringssl/crypto/ex_data.c +294 -0
- data/third_party/boringssl/crypto/hkdf/hkdf.c +89 -0
- data/third_party/boringssl/crypto/hmac/hmac.c +213 -0
- data/third_party/boringssl/crypto/internal.h +532 -0
- data/third_party/boringssl/crypto/lhash/lhash.c +346 -0
- data/third_party/boringssl/crypto/md4/md4.c +225 -0
- data/third_party/boringssl/crypto/md5/md5.c +275 -0
- data/third_party/boringssl/crypto/mem.c +200 -0
- data/third_party/boringssl/crypto/modes/cbc.c +216 -0
- data/third_party/boringssl/crypto/modes/cfb.c +231 -0
- data/third_party/boringssl/crypto/modes/ctr.c +226 -0
- data/third_party/boringssl/crypto/modes/gcm.c +1252 -0
- data/third_party/boringssl/crypto/modes/internal.h +370 -0
- data/third_party/boringssl/crypto/modes/ofb.c +108 -0
- data/third_party/boringssl/crypto/obj/obj.c +664 -0
- data/third_party/boringssl/crypto/obj/obj_dat.h +5257 -0
- data/third_party/boringssl/crypto/obj/obj_xref.c +124 -0
- data/third_party/boringssl/crypto/obj/obj_xref.h +96 -0
- data/third_party/boringssl/crypto/pem/pem_all.c +281 -0
- data/third_party/boringssl/crypto/pem/pem_info.c +404 -0
- data/third_party/boringssl/crypto/pem/pem_lib.c +835 -0
- data/third_party/boringssl/crypto/pem/pem_oth.c +89 -0
- data/third_party/boringssl/crypto/pem/pem_pk8.c +244 -0
- data/third_party/boringssl/crypto/pem/pem_pkey.c +312 -0
- data/third_party/boringssl/crypto/pem/pem_x509.c +65 -0
- data/third_party/boringssl/crypto/pem/pem_xaux.c +66 -0
- data/third_party/boringssl/crypto/pkcs8/internal.h +83 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbe.c +150 -0
- data/third_party/boringssl/crypto/pkcs8/p5_pbev2.c +440 -0
- data/third_party/boringssl/crypto/pkcs8/p8_pkey.c +85 -0
- data/third_party/boringssl/crypto/pkcs8/pkcs8.c +1217 -0
- data/third_party/boringssl/crypto/poly1305/poly1305.c +331 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_arm.c +301 -0
- data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +892 -0
- data/third_party/boringssl/crypto/rand/internal.h +32 -0
- data/third_party/boringssl/crypto/rand/rand.c +239 -0
- data/third_party/boringssl/crypto/rand/urandom.c +223 -0
- data/third_party/boringssl/crypto/rand/windows.c +56 -0
- data/third_party/boringssl/crypto/rc4/rc4.c +283 -0
- data/third_party/boringssl/crypto/refcount_c11.c +67 -0
- data/third_party/boringssl/crypto/refcount_lock.c +53 -0
- data/third_party/boringssl/crypto/rsa/blinding.c +462 -0
- data/third_party/boringssl/crypto/rsa/internal.h +164 -0
- data/third_party/boringssl/crypto/rsa/padding.c +711 -0
- data/third_party/boringssl/crypto/rsa/rsa.c +808 -0
- data/third_party/boringssl/crypto/rsa/rsa_asn1.c +473 -0
- data/third_party/boringssl/crypto/rsa/rsa_impl.c +1138 -0
- data/third_party/boringssl/crypto/sha/sha1.c +337 -0
- data/third_party/boringssl/crypto/sha/sha256.c +327 -0
- data/third_party/boringssl/crypto/sha/sha512.c +607 -0
- data/third_party/boringssl/crypto/stack/stack.c +386 -0
- data/third_party/boringssl/crypto/test/scoped_types.h +137 -0
- data/third_party/boringssl/crypto/test/test_util.h +35 -0
- data/third_party/boringssl/crypto/thread.c +101 -0
- data/third_party/boringssl/crypto/thread_none.c +55 -0
- data/third_party/boringssl/crypto/thread_pthread.c +167 -0
- data/third_party/boringssl/crypto/thread_win.c +282 -0
- data/third_party/boringssl/crypto/time_support.c +212 -0
- data/third_party/boringssl/crypto/x509/a_digest.c +97 -0
- data/third_party/boringssl/crypto/x509/a_sign.c +136 -0
- data/third_party/boringssl/crypto/x509/a_strex.c +564 -0
- data/third_party/boringssl/crypto/x509/a_verify.c +133 -0
- data/third_party/boringssl/crypto/x509/asn1_gen.c +873 -0
- data/third_party/boringssl/crypto/x509/by_dir.c +491 -0
- data/third_party/boringssl/crypto/x509/by_file.c +295 -0
- data/third_party/boringssl/crypto/x509/charmap.h +15 -0
- data/third_party/boringssl/crypto/x509/i2d_pr.c +84 -0
- data/third_party/boringssl/crypto/x509/pkcs7.c +353 -0
- data/third_party/boringssl/crypto/x509/t_crl.c +129 -0
- data/third_party/boringssl/crypto/x509/t_req.c +246 -0
- data/third_party/boringssl/crypto/x509/t_x509.c +500 -0
- data/third_party/boringssl/crypto/x509/t_x509a.c +109 -0
- data/third_party/boringssl/crypto/x509/vpm_int.h +70 -0
- data/third_party/boringssl/crypto/x509/x509.c +152 -0
- data/third_party/boringssl/crypto/x509/x509_att.c +353 -0
- data/third_party/boringssl/crypto/x509/x509_cmp.c +490 -0
- data/third_party/boringssl/crypto/x509/x509_d2.c +105 -0
- data/third_party/boringssl/crypto/x509/x509_def.c +88 -0
- data/third_party/boringssl/crypto/x509/x509_ext.c +206 -0
- data/third_party/boringssl/crypto/x509/x509_lu.c +738 -0
- data/third_party/boringssl/crypto/x509/x509_obj.c +191 -0
- data/third_party/boringssl/crypto/x509/x509_r2x.c +113 -0
- data/third_party/boringssl/crypto/x509/x509_req.c +315 -0
- data/third_party/boringssl/crypto/x509/x509_set.c +154 -0
- data/third_party/boringssl/crypto/x509/x509_trs.c +304 -0
- data/third_party/boringssl/crypto/x509/x509_txt.c +209 -0
- data/third_party/boringssl/crypto/x509/x509_v3.c +271 -0
- data/third_party/boringssl/crypto/x509/x509_vfy.c +2456 -0
- data/third_party/boringssl/crypto/x509/x509_vpm.c +672 -0
- data/third_party/boringssl/crypto/x509/x509cset.c +172 -0
- data/third_party/boringssl/crypto/x509/x509name.c +381 -0
- data/third_party/boringssl/crypto/x509/x509rset.c +80 -0
- data/third_party/boringssl/crypto/x509/x509spki.c +135 -0
- data/third_party/boringssl/crypto/x509/x509type.c +128 -0
- data/third_party/boringssl/crypto/x509/x_algor.c +154 -0
- data/third_party/boringssl/crypto/x509/x_all.c +547 -0
- data/third_party/boringssl/crypto/x509/x_attrib.c +117 -0
- data/third_party/boringssl/crypto/x509/x_crl.c +560 -0
- data/third_party/boringssl/crypto/x509/x_exten.c +75 -0
- data/third_party/boringssl/crypto/x509/x_info.c +95 -0
- data/third_party/boringssl/crypto/x509/x_name.c +538 -0
- data/third_party/boringssl/crypto/x509/x_pkey.c +100 -0
- data/third_party/boringssl/crypto/x509/x_pubkey.c +384 -0
- data/third_party/boringssl/crypto/x509/x_req.c +112 -0
- data/third_party/boringssl/crypto/x509/x_sig.c +69 -0
- data/third_party/boringssl/crypto/x509/x_spki.c +78 -0
- data/third_party/boringssl/crypto/x509/x_val.c +69 -0
- data/third_party/boringssl/crypto/x509/x_x509.c +227 -0
- data/third_party/boringssl/crypto/x509/x_x509a.c +197 -0
- data/third_party/boringssl/crypto/x509v3/ext_dat.h +129 -0
- data/third_party/boringssl/crypto/x509v3/pcy_cache.c +299 -0
- data/third_party/boringssl/crypto/x509v3/pcy_data.c +137 -0
- data/third_party/boringssl/crypto/x509v3/pcy_int.h +212 -0
- data/third_party/boringssl/crypto/x509v3/pcy_lib.c +165 -0
- data/third_party/boringssl/crypto/x509v3/pcy_map.c +133 -0
- data/third_party/boringssl/crypto/x509v3/pcy_node.c +197 -0
- data/third_party/boringssl/crypto/x509v3/pcy_tree.c +876 -0
- data/third_party/boringssl/crypto/x509v3/v3_akey.c +212 -0
- data/third_party/boringssl/crypto/x509v3/v3_akeya.c +71 -0
- data/third_party/boringssl/crypto/x509v3/v3_alt.c +622 -0
- data/third_party/boringssl/crypto/x509v3/v3_bcons.c +126 -0
- data/third_party/boringssl/crypto/x509v3/v3_bitst.c +141 -0
- data/third_party/boringssl/crypto/x509v3/v3_conf.c +459 -0
- data/third_party/boringssl/crypto/x509v3/v3_cpols.c +475 -0
- data/third_party/boringssl/crypto/x509v3/v3_crld.c +616 -0
- data/third_party/boringssl/crypto/x509v3/v3_enum.c +98 -0
- data/third_party/boringssl/crypto/x509v3/v3_extku.c +145 -0
- data/third_party/boringssl/crypto/x509v3/v3_genn.c +252 -0
- data/third_party/boringssl/crypto/x509v3/v3_ia5.c +117 -0
- data/third_party/boringssl/crypto/x509v3/v3_info.c +200 -0
- data/third_party/boringssl/crypto/x509v3/v3_int.c +87 -0
- data/third_party/boringssl/crypto/x509v3/v3_lib.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_ncons.c +510 -0
- data/third_party/boringssl/crypto/x509v3/v3_pci.c +335 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcia.c +56 -0
- data/third_party/boringssl/crypto/x509v3/v3_pcons.c +142 -0
- data/third_party/boringssl/crypto/x509v3/v3_pku.c +109 -0
- data/third_party/boringssl/crypto/x509v3/v3_pmaps.c +156 -0
- data/third_party/boringssl/crypto/x509v3/v3_prn.c +207 -0
- data/third_party/boringssl/crypto/x509v3/v3_purp.c +805 -0
- data/third_party/boringssl/crypto/x509v3/v3_skey.c +148 -0
- data/third_party/boringssl/crypto/x509v3/v3_sxnet.c +266 -0
- data/third_party/boringssl/crypto/x509v3/v3_utl.c +1322 -0
- data/third_party/boringssl/include/openssl/aead.h +346 -0
- data/third_party/boringssl/include/openssl/aes.h +158 -0
- data/third_party/boringssl/include/openssl/arm_arch.h +127 -0
- data/third_party/boringssl/include/openssl/asn1.h +1168 -0
- data/third_party/boringssl/include/openssl/asn1_mac.h +75 -0
- data/third_party/boringssl/include/openssl/asn1t.h +906 -0
- data/third_party/boringssl/include/openssl/base.h +261 -0
- data/third_party/boringssl/include/openssl/base64.h +184 -0
- data/third_party/boringssl/include/openssl/bio.h +902 -0
- data/third_party/boringssl/include/openssl/blowfish.h +93 -0
- data/third_party/boringssl/include/openssl/bn.h +885 -0
- data/third_party/boringssl/include/openssl/buf.h +118 -0
- data/third_party/boringssl/include/openssl/buffer.h +18 -0
- data/third_party/boringssl/include/openssl/bytestring.h +360 -0
- data/third_party/boringssl/include/openssl/cast.h +96 -0
- data/third_party/boringssl/include/openssl/chacha.h +37 -0
- data/third_party/boringssl/include/openssl/cipher.h +571 -0
- data/third_party/boringssl/include/openssl/cmac.h +76 -0
- data/third_party/boringssl/include/openssl/conf.h +145 -0
- data/third_party/boringssl/include/openssl/cpu.h +184 -0
- data/third_party/boringssl/include/openssl/crypto.h +68 -0
- data/third_party/boringssl/include/openssl/curve25519.h +88 -0
- data/third_party/boringssl/include/openssl/des.h +177 -0
- data/third_party/boringssl/include/openssl/dh.h +238 -0
- data/third_party/boringssl/include/openssl/digest.h +258 -0
- data/third_party/boringssl/include/openssl/dsa.h +343 -0
- data/third_party/boringssl/include/openssl/dtls1.h +16 -0
- data/third_party/boringssl/include/openssl/ec.h +355 -0
- data/third_party/boringssl/include/openssl/ec_key.h +280 -0
- data/third_party/boringssl/include/openssl/ecdh.h +102 -0
- data/third_party/boringssl/include/openssl/ecdsa.h +206 -0
- data/third_party/boringssl/include/openssl/engine.h +98 -0
- data/third_party/boringssl/include/openssl/err.h +487 -0
- data/third_party/boringssl/include/openssl/evp.h +750 -0
- data/third_party/boringssl/include/openssl/ex_data.h +213 -0
- data/third_party/boringssl/include/openssl/hkdf.h +44 -0
- data/third_party/boringssl/include/openssl/hmac.h +160 -0
- data/third_party/boringssl/include/openssl/lhash.h +192 -0
- data/third_party/boringssl/include/openssl/lhash_macros.h +132 -0
- data/third_party/boringssl/include/openssl/md4.h +102 -0
- data/third_party/boringssl/include/openssl/md5.h +107 -0
- data/third_party/boringssl/include/openssl/mem.h +140 -0
- data/third_party/boringssl/include/openssl/obj.h +198 -0
- data/third_party/boringssl/include/openssl/obj_mac.h +4140 -0
- data/third_party/boringssl/include/openssl/objects.h +18 -0
- data/third_party/boringssl/include/openssl/opensslfeatures.h +60 -0
- data/third_party/boringssl/include/openssl/opensslv.h +18 -0
- data/third_party/boringssl/include/openssl/ossl_typ.h +18 -0
- data/third_party/boringssl/include/openssl/pem.h +521 -0
- data/third_party/boringssl/include/openssl/pkcs12.h +18 -0
- data/third_party/boringssl/include/openssl/pkcs7.h +16 -0
- data/third_party/boringssl/include/openssl/pkcs8.h +220 -0
- data/third_party/boringssl/include/openssl/poly1305.h +51 -0
- data/third_party/boringssl/include/openssl/pqueue.h +146 -0
- data/third_party/boringssl/include/openssl/rand.h +113 -0
- data/third_party/boringssl/include/openssl/rc4.h +90 -0
- data/third_party/boringssl/include/openssl/rsa.h +637 -0
- data/third_party/boringssl/include/openssl/safestack.h +16 -0
- data/third_party/boringssl/include/openssl/sha.h +256 -0
- data/third_party/boringssl/include/openssl/srtp.h +18 -0
- data/third_party/boringssl/include/openssl/ssl.h +4466 -0
- data/third_party/boringssl/include/openssl/ssl3.h +441 -0
- data/third_party/boringssl/include/openssl/stack.h +298 -0
- data/third_party/boringssl/include/openssl/stack_macros.h +4190 -0
- data/third_party/boringssl/include/openssl/thread.h +173 -0
- data/third_party/boringssl/include/openssl/time_support.h +90 -0
- data/third_party/boringssl/include/openssl/tls1.h +653 -0
- data/third_party/boringssl/include/openssl/type_check.h +91 -0
- data/third_party/boringssl/include/openssl/x509.h +1258 -0
- data/third_party/boringssl/include/openssl/x509_vfy.h +611 -0
- data/third_party/boringssl/include/openssl/x509v3.h +798 -0
- data/third_party/boringssl/ssl/custom_extensions.c +257 -0
- data/third_party/boringssl/ssl/d1_both.c +880 -0
- data/third_party/boringssl/ssl/d1_clnt.c +566 -0
- data/third_party/boringssl/ssl/d1_lib.c +340 -0
- data/third_party/boringssl/ssl/d1_meth.c +130 -0
- data/third_party/boringssl/ssl/d1_pkt.c +578 -0
- data/third_party/boringssl/ssl/d1_srtp.c +234 -0
- data/third_party/boringssl/ssl/d1_srvr.c +485 -0
- data/third_party/boringssl/ssl/dtls_record.c +308 -0
- data/third_party/boringssl/ssl/internal.h +1276 -0
- data/third_party/boringssl/ssl/pqueue/pqueue.c +197 -0
- data/third_party/boringssl/ssl/s3_both.c +571 -0
- data/third_party/boringssl/ssl/s3_clnt.c +2241 -0
- data/third_party/boringssl/ssl/s3_enc.c +494 -0
- data/third_party/boringssl/ssl/s3_lib.c +587 -0
- data/third_party/boringssl/ssl/s3_meth.c +166 -0
- data/third_party/boringssl/ssl/s3_pkt.c +732 -0
- data/third_party/boringssl/ssl/s3_srvr.c +2536 -0
- data/third_party/boringssl/ssl/ssl_aead_ctx.c +300 -0
- data/third_party/boringssl/ssl/ssl_asn1.c +718 -0
- data/third_party/boringssl/ssl/ssl_buffer.c +319 -0
- data/third_party/boringssl/ssl/ssl_cert.c +539 -0
- data/third_party/boringssl/ssl/ssl_cipher.c +2003 -0
- data/third_party/boringssl/ssl/ssl_file.c +633 -0
- data/third_party/boringssl/ssl/ssl_lib.c +2653 -0
- data/third_party/boringssl/ssl/ssl_rsa.c +423 -0
- data/third_party/boringssl/ssl/ssl_session.c +764 -0
- data/third_party/boringssl/ssl/ssl_stat.c +591 -0
- data/third_party/boringssl/ssl/t1_enc.c +708 -0
- data/third_party/boringssl/ssl/t1_lib.c +2905 -0
- data/third_party/boringssl/ssl/test/async_bio.h +45 -0
- data/third_party/boringssl/ssl/test/packeted_bio.h +44 -0
- data/third_party/boringssl/ssl/test/scoped_types.h +28 -0
- data/third_party/boringssl/ssl/test/test_config.h +108 -0
- data/third_party/boringssl/ssl/tls_record.c +342 -0
- data/third_party/nanopb/pb.h +547 -0
- data/third_party/nanopb/pb_common.c +97 -0
- data/third_party/nanopb/pb_common.h +42 -0
- data/third_party/nanopb/pb_decode.c +1319 -0
- data/third_party/nanopb/pb_decode.h +149 -0
- data/third_party/nanopb/pb_encode.c +690 -0
- data/third_party/nanopb/pb_encode.h +154 -0
- data/third_party/zlib/adler32.c +179 -0
- data/third_party/zlib/compress.c +80 -0
- data/third_party/zlib/crc32.c +425 -0
- data/third_party/zlib/crc32.h +441 -0
- data/third_party/zlib/deflate.c +1967 -0
- data/third_party/zlib/deflate.h +346 -0
- data/third_party/zlib/gzclose.c +25 -0
- data/third_party/zlib/gzguts.h +209 -0
- data/third_party/zlib/gzlib.c +634 -0
- data/third_party/zlib/gzread.c +594 -0
- data/third_party/zlib/gzwrite.c +577 -0
- data/third_party/zlib/infback.c +640 -0
- data/third_party/zlib/inffast.c +340 -0
- data/third_party/zlib/inffast.h +11 -0
- data/third_party/zlib/inffixed.h +94 -0
- data/third_party/zlib/inflate.c +1512 -0
- data/third_party/zlib/inflate.h +122 -0
- data/third_party/zlib/inftrees.c +306 -0
- data/third_party/zlib/inftrees.h +62 -0
- data/third_party/zlib/trees.c +1226 -0
- data/third_party/zlib/trees.h +128 -0
- data/third_party/zlib/uncompr.c +59 -0
- data/third_party/zlib/zconf.h +511 -0
- data/third_party/zlib/zlib.h +1768 -0
- data/third_party/zlib/zutil.c +324 -0
- data/third_party/zlib/zutil.h +253 -0
- metadata +504 -20
- data/Rakefile +0 -63
- data/src/ruby/pb/grpc/health/v1alpha/health.rb +0 -29
data/src/core/census/context.c
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
/*
|
2
2
|
*
|
3
|
-
* Copyright 2015, Google Inc.
|
3
|
+
* Copyright 2015-2016, Google Inc.
|
4
4
|
* All rights reserved.
|
5
5
|
*
|
6
6
|
* Redistribution and use in source and binary forms, with or without
|
@@ -31,16 +31,479 @@
|
|
31
31
|
*
|
32
32
|
*/
|
33
33
|
|
34
|
-
#include "src/core/census/context.h"
|
35
|
-
|
36
|
-
#include <string.h>
|
37
34
|
#include <grpc/census.h>
|
38
35
|
#include <grpc/support/alloc.h>
|
36
|
+
#include <grpc/support/log.h>
|
37
|
+
#include <grpc/support/port_platform.h>
|
38
|
+
#include <grpc/support/useful.h>
|
39
|
+
#include <stdbool.h>
|
40
|
+
#include <string.h>
|
41
|
+
#include "src/core/support/string.h"
|
42
|
+
|
43
|
+
// Functions in this file support the public context API, including
|
44
|
+
// encoding/decoding as part of context propagation across RPC's. The overall
|
45
|
+
// requirements (in approximate priority order) for the
|
46
|
+
// context representation:
|
47
|
+
// 1. Efficient conversion to/from wire format
|
48
|
+
// 2. Minimal bytes used on-wire
|
49
|
+
// 3. Efficient context creation
|
50
|
+
// 4. Efficient lookup of tag value for a key
|
51
|
+
// 5. Efficient iteration over tags
|
52
|
+
// 6. Minimal memory footprint
|
53
|
+
//
|
54
|
+
// Notes on tradeoffs/decisions:
|
55
|
+
// * tag includes 1 byte length of key, as well as nil-terminating byte. These
|
56
|
+
// are to aid in efficient parsing and the ability to directly return key
|
57
|
+
// strings. This is more important than saving a single byte/tag on the wire.
|
58
|
+
// * The wire encoding uses only single byte values. This eliminates the need
|
59
|
+
// to handle endian-ness conversions. It also means there is a hard upper
|
60
|
+
// limit of 255 for both CENSUS_MAX_TAG_KV_LEN and CENSUS_MAX_PROPAGATED_TAGS.
|
61
|
+
// * Keep all tag information (keys/values/flags) in a single memory buffer,
|
62
|
+
// that can be directly copied to the wire.
|
63
|
+
|
64
|
+
// min and max valid chars in tag keys and values. All printable ASCII is OK.
|
65
|
+
#define MIN_VALID_TAG_CHAR 32 // ' '
|
66
|
+
#define MAX_VALID_TAG_CHAR 126 // '~'
|
67
|
+
|
68
|
+
// Structure representing a set of tags. Essentially a count of number of tags
|
69
|
+
// present, and pointer to a chunk of memory that contains the per-tag details.
|
70
|
+
struct tag_set {
|
71
|
+
int ntags; // number of tags.
|
72
|
+
int ntags_alloc; // ntags + number of deleted tags (total number of tags
|
73
|
+
// in all of kvm). This will always be == ntags, except during the process
|
74
|
+
// of building a new tag set.
|
75
|
+
size_t kvm_size; // number of bytes allocated for key/value storage.
|
76
|
+
size_t kvm_used; // number of bytes of used key/value memory
|
77
|
+
char *kvm; // key/value memory. Consists of repeated entries of:
|
78
|
+
// Offset Size Description
|
79
|
+
// 0 1 Key length, including trailing 0. (K)
|
80
|
+
// 1 1 Value length, including trailing 0 (V)
|
81
|
+
// 2 1 Flags
|
82
|
+
// 3 K Key bytes
|
83
|
+
// 3 + K V Value bytes
|
84
|
+
//
|
85
|
+
// We refer to the first 3 entries as the 'tag header'. If extra values are
|
86
|
+
// introduced in the header, you will need to modify the TAG_HEADER_SIZE
|
87
|
+
// constant, the raw_tag structure (and everything that uses it) and the
|
88
|
+
// encode/decode functions appropriately.
|
89
|
+
};
|
90
|
+
|
91
|
+
// Number of bytes in tag header.
|
92
|
+
#define TAG_HEADER_SIZE 3 // key length (1) + value length (1) + flags (1)
|
93
|
+
// Offsets to tag header entries.
|
94
|
+
#define KEY_LEN_OFFSET 0
|
95
|
+
#define VALUE_LEN_OFFSET 1
|
96
|
+
#define FLAG_OFFSET 2
|
97
|
+
|
98
|
+
// raw_tag represents the raw-storage form of a tag in the kvm of a tag_set.
|
99
|
+
struct raw_tag {
|
100
|
+
uint8_t key_len;
|
101
|
+
uint8_t value_len;
|
102
|
+
uint8_t flags;
|
103
|
+
char *key;
|
104
|
+
char *value;
|
105
|
+
};
|
106
|
+
|
107
|
+
// Use a reserved flag bit for indication of deleted tag.
|
108
|
+
#define CENSUS_TAG_DELETED CENSUS_TAG_RESERVED
|
109
|
+
#define CENSUS_TAG_IS_DELETED(flags) (flags & CENSUS_TAG_DELETED)
|
110
|
+
|
111
|
+
// Primary representation of a context. Composed of 2 underlying tag_set
|
112
|
+
// structs, one each for propagated and local (non-propagated) tags. This is
|
113
|
+
// to efficiently support tag encoding/decoding.
|
114
|
+
// TODO(aveitch): need to add tracing id's/structure.
|
115
|
+
struct census_context {
|
116
|
+
struct tag_set tags[2];
|
117
|
+
census_context_status status;
|
118
|
+
};
|
119
|
+
|
120
|
+
// Indices into the tags member of census_context
|
121
|
+
#define PROPAGATED_TAGS 0
|
122
|
+
#define LOCAL_TAGS 1
|
123
|
+
|
124
|
+
// Validate (check all characters are in range and size is less than limit) a
|
125
|
+
// key or value string. Returns 0 if the string is invalid, or the length
|
126
|
+
// (including terminator) if valid.
|
127
|
+
static size_t validate_tag(const char *kv) {
|
128
|
+
size_t len = 1;
|
129
|
+
char ch;
|
130
|
+
while ((ch = *kv++) != 0) {
|
131
|
+
if (ch < MIN_VALID_TAG_CHAR || ch > MAX_VALID_TAG_CHAR) {
|
132
|
+
return 0;
|
133
|
+
}
|
134
|
+
len++;
|
135
|
+
}
|
136
|
+
if (len > CENSUS_MAX_TAG_KV_LEN) {
|
137
|
+
return 0;
|
138
|
+
}
|
139
|
+
return len;
|
140
|
+
}
|
39
141
|
|
40
|
-
|
142
|
+
// Extract a raw tag given a pointer (raw) to the tag header. Allow for some
|
143
|
+
// extra bytes in the tag header (see encode/decode functions for usage: this
|
144
|
+
// allows for future expansion of the tag header).
|
145
|
+
static char *decode_tag(struct raw_tag *tag, char *header, int offset) {
|
146
|
+
tag->key_len = (uint8_t)(*header++);
|
147
|
+
tag->value_len = (uint8_t)(*header++);
|
148
|
+
tag->flags = (uint8_t)(*header++);
|
149
|
+
header += offset;
|
150
|
+
tag->key = header;
|
151
|
+
header += tag->key_len;
|
152
|
+
tag->value = header;
|
153
|
+
return header + tag->value_len;
|
154
|
+
}
|
155
|
+
|
156
|
+
// Make a copy (in 'to') of an existing tag_set.
|
157
|
+
static void tag_set_copy(struct tag_set *to, const struct tag_set *from) {
|
158
|
+
memcpy(to, from, sizeof(struct tag_set));
|
159
|
+
to->kvm = gpr_malloc(to->kvm_size);
|
160
|
+
memcpy(to->kvm, from->kvm, from->kvm_used);
|
161
|
+
}
|
162
|
+
|
163
|
+
// Delete a tag from a tag_set, if it exists (returns true if it did).
|
164
|
+
static bool tag_set_delete_tag(struct tag_set *tags, const char *key,
|
165
|
+
size_t key_len) {
|
166
|
+
char *kvp = tags->kvm;
|
167
|
+
for (int i = 0; i < tags->ntags_alloc; i++) {
|
168
|
+
uint8_t *flags = (uint8_t *)(kvp + FLAG_OFFSET);
|
169
|
+
struct raw_tag tag;
|
170
|
+
kvp = decode_tag(&tag, kvp, 0);
|
171
|
+
if (CENSUS_TAG_IS_DELETED(tag.flags)) continue;
|
172
|
+
if ((key_len == tag.key_len) && (memcmp(key, tag.key, key_len) == 0)) {
|
173
|
+
*flags |= CENSUS_TAG_DELETED;
|
174
|
+
tags->ntags--;
|
175
|
+
return true;
|
176
|
+
}
|
177
|
+
}
|
178
|
+
return false;
|
179
|
+
}
|
180
|
+
|
181
|
+
// Delete a tag from a context, return true if it existed.
|
182
|
+
static bool context_delete_tag(census_context *context, const census_tag *tag,
|
183
|
+
size_t key_len) {
|
184
|
+
return (
|
185
|
+
tag_set_delete_tag(&context->tags[LOCAL_TAGS], tag->key, key_len) ||
|
186
|
+
tag_set_delete_tag(&context->tags[PROPAGATED_TAGS], tag->key, key_len));
|
187
|
+
}
|
188
|
+
|
189
|
+
// Add a tag to a tag_set. Return true on success, false if the tag could
|
190
|
+
// not be added because of constraints on tag set size. This function should
|
191
|
+
// not be called if the tag may already exist (in a non-deleted state) in
|
192
|
+
// the tag_set, as that would result in two tags with the same key.
|
193
|
+
static bool tag_set_add_tag(struct tag_set *tags, const census_tag *tag,
|
194
|
+
size_t key_len, size_t value_len) {
|
195
|
+
if (tags->ntags == CENSUS_MAX_PROPAGATED_TAGS) {
|
196
|
+
return false;
|
197
|
+
}
|
198
|
+
const size_t tag_size = key_len + value_len + TAG_HEADER_SIZE;
|
199
|
+
if (tags->kvm_used + tag_size > tags->kvm_size) {
|
200
|
+
// allocate new memory if needed
|
201
|
+
tags->kvm_size += 2 * CENSUS_MAX_TAG_KV_LEN + TAG_HEADER_SIZE;
|
202
|
+
char *new_kvm = gpr_malloc(tags->kvm_size);
|
203
|
+
memcpy(new_kvm, tags->kvm, tags->kvm_used);
|
204
|
+
gpr_free(tags->kvm);
|
205
|
+
tags->kvm = new_kvm;
|
206
|
+
}
|
207
|
+
char *kvp = tags->kvm + tags->kvm_used;
|
208
|
+
*kvp++ = (char)key_len;
|
209
|
+
*kvp++ = (char)value_len;
|
210
|
+
// ensure reserved flags are not used.
|
211
|
+
*kvp++ = (char)(tag->flags & (CENSUS_TAG_PROPAGATE | CENSUS_TAG_STATS));
|
212
|
+
memcpy(kvp, tag->key, key_len);
|
213
|
+
kvp += key_len;
|
214
|
+
memcpy(kvp, tag->value, value_len);
|
215
|
+
tags->kvm_used += tag_size;
|
216
|
+
tags->ntags++;
|
217
|
+
tags->ntags_alloc++;
|
218
|
+
return true;
|
219
|
+
}
|
220
|
+
|
221
|
+
// Add/modify/delete a tag to/in a context. Caller must validate that tag key
|
222
|
+
// etc. are valid.
|
223
|
+
static void context_modify_tag(census_context *context, const census_tag *tag,
|
224
|
+
size_t key_len, size_t value_len) {
|
225
|
+
// First delete the tag if it is already present.
|
226
|
+
bool deleted = context_delete_tag(context, tag, key_len);
|
227
|
+
bool added = false;
|
228
|
+
if (CENSUS_TAG_IS_PROPAGATED(tag->flags)) {
|
229
|
+
added = tag_set_add_tag(&context->tags[PROPAGATED_TAGS], tag, key_len,
|
230
|
+
value_len);
|
231
|
+
} else {
|
232
|
+
added =
|
233
|
+
tag_set_add_tag(&context->tags[LOCAL_TAGS], tag, key_len, value_len);
|
234
|
+
}
|
235
|
+
|
236
|
+
if (deleted) {
|
237
|
+
context->status.n_modified_tags++;
|
238
|
+
} else {
|
239
|
+
if (added) {
|
240
|
+
context->status.n_added_tags++;
|
241
|
+
} else {
|
242
|
+
context->status.n_ignored_tags++;
|
243
|
+
}
|
244
|
+
}
|
245
|
+
}
|
41
246
|
|
42
|
-
|
43
|
-
|
44
|
-
|
247
|
+
// Remove memory used for deleted tags from a tag set. Basic algorithm:
|
248
|
+
// 1) Walk through tag set to find first deleted tag. Record where it is.
|
249
|
+
// 2) Find the next not-deleted tag. Copy all of kvm from there to the end
|
250
|
+
// "over" the deleted tags
|
251
|
+
// 3) repeat #1 and #2 until we have seen all tags
|
252
|
+
// 4) if we are still looking for a not-deleted tag, then all the end portion
|
253
|
+
// of the kvm is deleted. Just reduce the used amount of memory by the
|
254
|
+
// appropriate amount.
|
255
|
+
static void tag_set_flatten(struct tag_set *tags) {
|
256
|
+
if (tags->ntags == tags->ntags_alloc) return;
|
257
|
+
bool found_deleted = false; // found a deleted tag.
|
258
|
+
char *kvp = tags->kvm;
|
259
|
+
char *dbase = NULL; // record location of deleted tag
|
260
|
+
for (int i = 0; i < tags->ntags_alloc; i++) {
|
261
|
+
struct raw_tag tag;
|
262
|
+
char *next_kvp = decode_tag(&tag, kvp, 0);
|
263
|
+
if (found_deleted) {
|
264
|
+
if (!CENSUS_TAG_IS_DELETED(tag.flags)) {
|
265
|
+
ptrdiff_t reduce = kvp - dbase; // #bytes in deleted tags
|
266
|
+
GPR_ASSERT(reduce > 0);
|
267
|
+
ptrdiff_t copy_size = tags->kvm + tags->kvm_used - kvp;
|
268
|
+
GPR_ASSERT(copy_size > 0);
|
269
|
+
memmove(dbase, kvp, (size_t)copy_size);
|
270
|
+
tags->kvm_used -= (size_t)reduce;
|
271
|
+
next_kvp -= reduce;
|
272
|
+
found_deleted = false;
|
273
|
+
}
|
274
|
+
} else {
|
275
|
+
if (CENSUS_TAG_IS_DELETED(tag.flags)) {
|
276
|
+
dbase = kvp;
|
277
|
+
found_deleted = true;
|
278
|
+
}
|
279
|
+
}
|
280
|
+
kvp = next_kvp;
|
281
|
+
}
|
282
|
+
if (found_deleted) {
|
283
|
+
GPR_ASSERT(dbase > tags->kvm);
|
284
|
+
tags->kvm_used = (size_t)(dbase - tags->kvm);
|
285
|
+
}
|
286
|
+
tags->ntags_alloc = tags->ntags;
|
287
|
+
}
|
288
|
+
|
289
|
+
census_context *census_context_create(const census_context *base,
|
290
|
+
const census_tag *tags, int ntags,
|
291
|
+
census_context_status const **status) {
|
292
|
+
census_context *context = gpr_malloc(sizeof(census_context));
|
293
|
+
// If we are given a base, copy it into our new tag set. Otherwise set it
|
294
|
+
// to zero/NULL everything.
|
295
|
+
if (base == NULL) {
|
296
|
+
memset(context, 0, sizeof(census_context));
|
297
|
+
} else {
|
298
|
+
tag_set_copy(&context->tags[PROPAGATED_TAGS], &base->tags[PROPAGATED_TAGS]);
|
299
|
+
tag_set_copy(&context->tags[LOCAL_TAGS], &base->tags[LOCAL_TAGS]);
|
300
|
+
memset(&context->status, 0, sizeof(context->status));
|
301
|
+
}
|
302
|
+
// Walk over the additional tags and, for those that aren't invalid, modify
|
303
|
+
// the context to add/replace/delete as required.
|
304
|
+
for (int i = 0; i < ntags; i++) {
|
305
|
+
const census_tag *tag = &tags[i];
|
306
|
+
size_t key_len = validate_tag(tag->key);
|
307
|
+
// ignore the tag if it is invalid or too short.
|
308
|
+
if (key_len <= 1) {
|
309
|
+
context->status.n_invalid_tags++;
|
310
|
+
} else {
|
311
|
+
if (tag->value != NULL) {
|
312
|
+
size_t value_len = validate_tag(tag->value);
|
313
|
+
if (value_len != 0) {
|
314
|
+
context_modify_tag(context, tag, key_len, value_len);
|
315
|
+
} else {
|
316
|
+
context->status.n_invalid_tags++;
|
317
|
+
}
|
318
|
+
} else {
|
319
|
+
if (context_delete_tag(context, tag, key_len)) {
|
320
|
+
context->status.n_deleted_tags++;
|
321
|
+
}
|
322
|
+
}
|
323
|
+
}
|
324
|
+
}
|
325
|
+
// Remove any deleted tags, update status if needed, and return.
|
326
|
+
tag_set_flatten(&context->tags[PROPAGATED_TAGS]);
|
327
|
+
tag_set_flatten(&context->tags[LOCAL_TAGS]);
|
328
|
+
context->status.n_propagated_tags = context->tags[PROPAGATED_TAGS].ntags;
|
329
|
+
context->status.n_local_tags = context->tags[LOCAL_TAGS].ntags;
|
330
|
+
if (status) {
|
331
|
+
*status = &context->status;
|
332
|
+
}
|
333
|
+
return context;
|
334
|
+
}
|
335
|
+
|
336
|
+
const census_context_status *census_context_get_status(
|
337
|
+
const census_context *context) {
|
338
|
+
return &context->status;
|
339
|
+
}
|
340
|
+
|
341
|
+
void census_context_destroy(census_context *context) {
|
342
|
+
gpr_free(context->tags[PROPAGATED_TAGS].kvm);
|
343
|
+
gpr_free(context->tags[LOCAL_TAGS].kvm);
|
344
|
+
gpr_free(context);
|
345
|
+
}
|
346
|
+
|
347
|
+
void census_context_initialize_iterator(const census_context *context,
|
348
|
+
census_context_iterator *iterator) {
|
349
|
+
iterator->context = context;
|
350
|
+
iterator->index = 0;
|
351
|
+
if (context->tags[PROPAGATED_TAGS].ntags != 0) {
|
352
|
+
iterator->base = PROPAGATED_TAGS;
|
353
|
+
iterator->kvm = context->tags[PROPAGATED_TAGS].kvm;
|
354
|
+
} else if (context->tags[LOCAL_TAGS].ntags != 0) {
|
355
|
+
iterator->base = LOCAL_TAGS;
|
356
|
+
iterator->kvm = context->tags[LOCAL_TAGS].kvm;
|
357
|
+
} else {
|
358
|
+
iterator->base = -1;
|
359
|
+
}
|
360
|
+
}
|
361
|
+
|
362
|
+
int census_context_next_tag(census_context_iterator *iterator,
|
363
|
+
census_tag *tag) {
|
364
|
+
if (iterator->base < 0) {
|
365
|
+
return 0;
|
366
|
+
}
|
367
|
+
struct raw_tag raw;
|
368
|
+
iterator->kvm = decode_tag(&raw, iterator->kvm, 0);
|
369
|
+
tag->key = raw.key;
|
370
|
+
tag->value = raw.value;
|
371
|
+
tag->flags = raw.flags;
|
372
|
+
if (++iterator->index == iterator->context->tags[iterator->base].ntags) {
|
373
|
+
do {
|
374
|
+
if (iterator->base == LOCAL_TAGS) {
|
375
|
+
iterator->base = -1;
|
376
|
+
return 1;
|
377
|
+
}
|
378
|
+
} while (iterator->context->tags[++iterator->base].ntags == 0);
|
379
|
+
iterator->index = 0;
|
380
|
+
iterator->kvm = iterator->context->tags[iterator->base].kvm;
|
381
|
+
}
|
382
|
+
return 1;
|
383
|
+
}
|
384
|
+
|
385
|
+
// Find a tag in a tag_set by key. Return true if found, false otherwise.
|
386
|
+
static bool tag_set_get_tag(const struct tag_set *tags, const char *key,
|
387
|
+
size_t key_len, census_tag *tag) {
|
388
|
+
char *kvp = tags->kvm;
|
389
|
+
for (int i = 0; i < tags->ntags; i++) {
|
390
|
+
struct raw_tag raw;
|
391
|
+
kvp = decode_tag(&raw, kvp, 0);
|
392
|
+
if (key_len == raw.key_len && memcmp(raw.key, key, key_len) == 0) {
|
393
|
+
tag->key = raw.key;
|
394
|
+
tag->value = raw.value;
|
395
|
+
tag->flags = raw.flags;
|
396
|
+
return true;
|
397
|
+
}
|
398
|
+
}
|
399
|
+
return false;
|
400
|
+
}
|
401
|
+
|
402
|
+
int census_context_get_tag(const census_context *context, const char *key,
|
403
|
+
census_tag *tag) {
|
404
|
+
size_t key_len = strlen(key) + 1;
|
405
|
+
if (key_len == 1) {
|
406
|
+
return 0;
|
407
|
+
}
|
408
|
+
if (tag_set_get_tag(&context->tags[PROPAGATED_TAGS], key, key_len, tag) ||
|
409
|
+
tag_set_get_tag(&context->tags[LOCAL_TAGS], key, key_len, tag)) {
|
410
|
+
return 1;
|
411
|
+
}
|
45
412
|
return 0;
|
46
413
|
}
|
414
|
+
|
415
|
+
// Context encoding and decoding functions.
|
416
|
+
//
|
417
|
+
// Wire format for tag_set's on the wire:
|
418
|
+
//
|
419
|
+
// First, a tag set header:
|
420
|
+
//
|
421
|
+
// offset bytes description
|
422
|
+
// 0 1 version number
|
423
|
+
// 1 1 number of bytes in this header. This allows for future
|
424
|
+
// expansion.
|
425
|
+
// 2 1 number of bytes in each tag header.
|
426
|
+
// 3 1 ntags value from tag set.
|
427
|
+
//
|
428
|
+
// This is followed by the key/value memory from struct tag_set.
|
429
|
+
|
430
|
+
#define ENCODED_VERSION 0 // Version number
|
431
|
+
#define ENCODED_HEADER_SIZE 4 // size of tag set header
|
432
|
+
|
433
|
+
// Encode a tag set. Returns 0 if buffer is too small.
|
434
|
+
static size_t tag_set_encode(const struct tag_set *tags, char *buffer,
|
435
|
+
size_t buf_size) {
|
436
|
+
if (buf_size < ENCODED_HEADER_SIZE + tags->kvm_used) {
|
437
|
+
return 0;
|
438
|
+
}
|
439
|
+
buf_size -= ENCODED_HEADER_SIZE;
|
440
|
+
*buffer++ = (char)ENCODED_VERSION;
|
441
|
+
*buffer++ = (char)ENCODED_HEADER_SIZE;
|
442
|
+
*buffer++ = (char)TAG_HEADER_SIZE;
|
443
|
+
*buffer++ = (char)tags->ntags;
|
444
|
+
if (tags->ntags == 0) {
|
445
|
+
return ENCODED_HEADER_SIZE;
|
446
|
+
}
|
447
|
+
memcpy(buffer, tags->kvm, tags->kvm_used);
|
448
|
+
return ENCODED_HEADER_SIZE + tags->kvm_used;
|
449
|
+
}
|
450
|
+
|
451
|
+
size_t census_context_encode(const census_context *context, char *buffer,
|
452
|
+
size_t buf_size) {
|
453
|
+
return tag_set_encode(&context->tags[PROPAGATED_TAGS], buffer, buf_size);
|
454
|
+
}
|
455
|
+
|
456
|
+
// Decode a tag set.
|
457
|
+
static void tag_set_decode(struct tag_set *tags, const char *buffer,
|
458
|
+
size_t size) {
|
459
|
+
uint8_t version = (uint8_t)(*buffer++);
|
460
|
+
uint8_t header_size = (uint8_t)(*buffer++);
|
461
|
+
uint8_t tag_header_size = (uint8_t)(*buffer++);
|
462
|
+
tags->ntags = tags->ntags_alloc = (int)(*buffer++);
|
463
|
+
if (tags->ntags == 0) {
|
464
|
+
tags->ntags_alloc = 0;
|
465
|
+
tags->kvm_size = 0;
|
466
|
+
tags->kvm_used = 0;
|
467
|
+
tags->kvm = NULL;
|
468
|
+
return;
|
469
|
+
}
|
470
|
+
if (header_size != ENCODED_HEADER_SIZE) {
|
471
|
+
GPR_ASSERT(version != ENCODED_VERSION);
|
472
|
+
GPR_ASSERT(ENCODED_HEADER_SIZE < header_size);
|
473
|
+
buffer += (header_size - ENCODED_HEADER_SIZE);
|
474
|
+
}
|
475
|
+
tags->kvm_used = size - header_size;
|
476
|
+
tags->kvm_size = tags->kvm_used + CENSUS_MAX_TAG_KV_LEN;
|
477
|
+
tags->kvm = gpr_malloc(tags->kvm_size);
|
478
|
+
if (tag_header_size != TAG_HEADER_SIZE) {
|
479
|
+
// something new in the tag information. I don't understand it, so
|
480
|
+
// don't copy it over.
|
481
|
+
GPR_ASSERT(version != ENCODED_VERSION);
|
482
|
+
GPR_ASSERT(tag_header_size > TAG_HEADER_SIZE);
|
483
|
+
char *kvp = tags->kvm;
|
484
|
+
for (int i = 0; i < tags->ntags; i++) {
|
485
|
+
memcpy(kvp, buffer, TAG_HEADER_SIZE);
|
486
|
+
kvp += header_size;
|
487
|
+
struct raw_tag raw;
|
488
|
+
buffer =
|
489
|
+
decode_tag(&raw, (char *)buffer, tag_header_size - TAG_HEADER_SIZE);
|
490
|
+
memcpy(kvp, raw.key, (size_t)raw.key_len + raw.value_len);
|
491
|
+
kvp += raw.key_len + raw.value_len;
|
492
|
+
}
|
493
|
+
} else {
|
494
|
+
memcpy(tags->kvm, buffer, tags->kvm_used);
|
495
|
+
}
|
496
|
+
}
|
497
|
+
|
498
|
+
census_context *census_context_decode(const char *buffer, size_t size) {
|
499
|
+
census_context *context = gpr_malloc(sizeof(census_context));
|
500
|
+
memset(&context->tags[LOCAL_TAGS], 0, sizeof(struct tag_set));
|
501
|
+
if (buffer == NULL) {
|
502
|
+
memset(&context->tags[PROPAGATED_TAGS], 0, sizeof(struct tag_set));
|
503
|
+
} else {
|
504
|
+
tag_set_decode(&context->tags[PROPAGATED_TAGS], buffer, size);
|
505
|
+
}
|
506
|
+
memset(&context->status, 0, sizeof(context->status));
|
507
|
+
context->status.n_propagated_tags = context->tags[PROPAGATED_TAGS].ntags;
|
508
|
+
return context;
|
509
|
+
}
|