gitextract_8ctnl3nt/ ├── .codecov.yml ├── .github/ │ ├── CODEOWNERS │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── claude-review-fork.yml │ ├── claude.yml │ ├── pr-check.yml │ └── tests.yml ├── .gitignore ├── .golangci.yaml ├── .licenserc.yaml ├── .typos.toml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── NOTICE ├── README.md ├── README_cn.md ├── ROADMAP.md ├── client/ │ ├── callopt/ │ │ ├── options.go │ │ ├── options_test.go │ │ └── streamcall/ │ │ ├── call_options.go │ │ ├── call_options_test.go │ │ ├── definition.go │ │ └── grpc_options.go │ ├── client.go │ ├── client_test.go │ ├── context.go │ ├── context_middleware.go │ ├── context_middleware_test.go │ ├── context_test.go │ ├── deprecated.go │ ├── doc.go │ ├── genericclient/ │ │ ├── client.go │ │ └── deprecated.go │ ├── middlewares.go │ ├── middlewares_test.go │ ├── mocks_test.go │ ├── option.go │ ├── option_advanced.go │ ├── option_stream.go │ ├── option_test.go │ ├── option_ttstream.go │ ├── option_unary.go │ ├── rpctimeout.go │ ├── rpctimeout_pool.go │ ├── rpctimeout_pool_test.go │ ├── rpctimeout_test.go │ ├── service_inline.go │ ├── service_inline_test.go │ ├── stream.go │ ├── stream_test.go │ └── streamclient/ │ ├── client_option.go │ ├── client_option_advanced.go │ ├── definition.go │ ├── grpc_option.go │ └── option.go ├── go.mod ├── go.sum ├── internal/ │ ├── client/ │ │ ├── lock.go │ │ ├── option.go │ │ ├── option_ttstream.go │ │ ├── remote_option.go │ │ └── remote_option_windows.go │ ├── configutil/ │ │ ├── config.go │ │ ├── config_test.go │ │ ├── once.go │ │ └── once_test.go │ ├── generic/ │ │ ├── context.go │ │ ├── generic_service.go │ │ ├── proto/ │ │ │ └── type.go │ │ ├── utils.go │ │ └── utils_test.go │ ├── mocks/ │ │ ├── README.md │ │ ├── bufiox/ │ │ │ └── bufreader.go │ │ ├── conn.go │ │ ├── diagnosis/ │ │ │ └── service.go │ │ ├── discovery/ │ │ │ └── discovery.go │ │ ├── doc.go │ │ ├── generic/ │ │ │ ├── generic_service.go │ │ │ └── thrift.go │ │ ├── klog/ │ │ │ └── log.go │ │ ├── limiter/ │ │ │ └── limiter.go │ │ ├── loadbalance/ │ │ │ └── loadbalancer.go │ │ ├── message/ │ │ │ └── message.go │ │ ├── net/ │ │ │ └── net.go │ │ ├── netpoll/ │ │ │ ├── connection.go │ │ │ └── nocopy.go │ │ ├── proto/ │ │ │ ├── kitex_gen/ │ │ │ │ └── pbapi/ │ │ │ │ └── mock/ │ │ │ │ ├── client.go │ │ │ │ ├── invoker.go │ │ │ │ ├── mock.go │ │ │ │ ├── pbapi.pb.go │ │ │ │ └── server.go │ │ │ └── pbapi.proto │ │ ├── proxy/ │ │ │ └── proxy.go │ │ ├── remote/ │ │ │ ├── bytebuf.go │ │ │ ├── codec.go │ │ │ ├── conn_wrapper.go │ │ │ ├── connpool.go │ │ │ ├── dialer.go │ │ │ ├── payload_codec.go │ │ │ ├── servicesearcher.go │ │ │ ├── trans_handler.go │ │ │ ├── trans_meta.go │ │ │ └── trans_pipeline.go │ │ ├── rpc_info/ │ │ │ └── timeout_provider.go │ │ ├── serviceinfo.go │ │ ├── stats/ │ │ │ └── tracer.go │ │ ├── thrift/ │ │ │ ├── gen.sh │ │ │ ├── k-consts.go │ │ │ ├── k-stream.go │ │ │ ├── k-test.go │ │ │ ├── stream.go │ │ │ ├── stream.thrift │ │ │ ├── test.go │ │ │ └── test.thrift │ │ ├── transhandlerclient.go │ │ ├── transhandlerserver.go │ │ ├── update.sh │ │ └── utils/ │ │ └── sharedticker.go │ ├── reusable.go │ ├── server/ │ │ ├── config.go │ │ ├── option.go │ │ ├── register_option.go │ │ ├── remote_option.go │ │ └── remote_option_windows.go │ ├── stream/ │ │ ├── cancel.go │ │ ├── stream_option.go │ │ └── stream_option_test.go │ ├── test/ │ │ ├── assert.go │ │ ├── assert_test.go │ │ └── port.go │ └── utils/ │ └── safemcache/ │ ├── safemcache.go │ └── safemcache_test.go ├── licenses/ │ ├── LICENSE-gjson │ ├── LICENSE-go-genproto-main │ ├── LICENSE-grpc.txt │ ├── LICENSE-httprouter │ ├── LICENSE-json-iterator.txt │ ├── LICENSE-pid │ ├── LICENSE-protobuf.txt │ ├── LICENSE-thrift │ ├── LICENSE-xxhash.txt │ └── LICENSE-yaml.v3 ├── pkg/ │ ├── acl/ │ │ ├── acl.go │ │ └── acl_test.go │ ├── circuitbreak/ │ │ ├── cbsuite.go │ │ ├── cbsuite_option.go │ │ ├── cbsuite_option_test.go │ │ ├── cbsuite_test.go │ │ ├── circuitbreak.go │ │ ├── circuitbreak_test.go │ │ ├── default.go │ │ ├── default_test.go │ │ ├── doc.go │ │ └── item_circuit_breaker.go │ ├── connpool/ │ │ ├── config.go │ │ └── config_test.go │ ├── consts/ │ │ └── ctx.go │ ├── diagnosis/ │ │ ├── interface.go │ │ └── interface_test.go │ ├── discovery/ │ │ ├── constants.go │ │ ├── discovery.go │ │ └── discovery_test.go │ ├── endpoint/ │ │ ├── cep/ │ │ │ └── endpoint.go │ │ ├── deprecated.go │ │ ├── endpoint.go │ │ ├── endpoint_test.go │ │ ├── sep/ │ │ │ └── endpoint.go │ │ └── unary_endpoint.go │ ├── event/ │ │ ├── bus.go │ │ ├── bus_test.go │ │ ├── event.go │ │ ├── queue.go │ │ └── queue_test.go │ ├── exception/ │ │ ├── deprecated.go │ │ └── deprecated_test.go │ ├── fallback/ │ │ ├── fallback.go │ │ └── fallback_test.go │ ├── generic/ │ │ ├── binary_test/ │ │ │ ├── generic_init.go │ │ │ └── generic_test.go │ │ ├── binarypb_codec.go │ │ ├── binarypb_codec_test.go │ │ ├── binarythrift_codec.go │ │ ├── binarythrift_codec_test.go │ │ ├── binarythrift_codec_v2.go │ │ ├── closer.go │ │ ├── descriptor/ │ │ │ ├── annotation.go │ │ │ ├── descriptor.go │ │ │ ├── field_mapping.go │ │ │ ├── field_mapping_test.go │ │ │ ├── http.go │ │ │ ├── http_mapping.go │ │ │ ├── http_test.go │ │ │ ├── render.go │ │ │ ├── route.go │ │ │ ├── router.go │ │ │ ├── tree.go │ │ │ ├── tree_test.go │ │ │ ├── type.go │ │ │ ├── type_test.go │ │ │ ├── util.go │ │ │ ├── value_mapping.go │ │ │ └── value_mapping_test.go │ │ ├── descriptor_provider.go │ │ ├── generic.go │ │ ├── generic_service.go │ │ ├── generic_service_test.go │ │ ├── generic_test.go │ │ ├── grpcjson_test/ │ │ │ ├── generic_init.go │ │ │ ├── generic_test.go │ │ │ └── idl/ │ │ │ └── api.thrift │ │ ├── grpcjsonpb_test/ │ │ │ ├── generic_init.go │ │ │ ├── generic_test.go │ │ │ └── idl/ │ │ │ ├── pbapi.proto │ │ │ └── pbapi_multi_service.proto │ │ ├── http_test/ │ │ │ ├── conf/ │ │ │ │ └── kitex.yml │ │ │ ├── generic_init.go │ │ │ ├── generic_test.go │ │ │ └── idl/ │ │ │ ├── baseline.thrift │ │ │ ├── binary_echo.thrift │ │ │ ├── dynamicgo_go_tag_error.thrift │ │ │ ├── http_annotation.thrift │ │ │ └── mock.thrift │ │ ├── httppb_test/ │ │ │ ├── conf/ │ │ │ │ └── kitex.yml │ │ │ ├── generic_init.go │ │ │ ├── generic_test.go │ │ │ └── idl/ │ │ │ ├── echo.pb.go │ │ │ ├── echo.proto │ │ │ └── echo.thrift │ │ ├── httppbthrift_codec.go │ │ ├── httppbthrift_codec_test.go │ │ ├── httpthrift_codec.go │ │ ├── httpthrift_codec_test.go │ │ ├── json_test/ │ │ │ ├── conf/ │ │ │ │ └── kitex.yml │ │ │ ├── generic_init.go │ │ │ ├── generic_test.go │ │ │ └── idl/ │ │ │ ├── base.thrift │ │ │ ├── baseline.thrift │ │ │ ├── binary_echo.thrift │ │ │ ├── example.thrift │ │ │ ├── example_multi_service.thrift │ │ │ ├── extend.thrift │ │ │ ├── mock.thrift │ │ │ ├── mock_unknown_method.thrift │ │ │ └── self_ref.thrift │ │ ├── jsonpb_codec.go │ │ ├── jsonpb_codec_test.go │ │ ├── jsonpb_test/ │ │ │ ├── generic_init.go │ │ │ ├── generic_test.go │ │ │ └── idl/ │ │ │ ├── echo.proto │ │ │ ├── echo_import.proto │ │ │ ├── example.proto │ │ │ └── example2.proto │ │ ├── jsonthrift_codec.go │ │ ├── jsonthrift_codec_test.go │ │ ├── map_test/ │ │ │ ├── conf/ │ │ │ │ └── kitex.yml │ │ │ ├── generic_init.go │ │ │ ├── generic_test.go │ │ │ └── idl/ │ │ │ ├── base.thrift │ │ │ ├── example.thrift │ │ │ ├── mock.thrift │ │ │ └── self_ref.thrift │ │ ├── mapthrift_codec.go │ │ ├── mapthrift_codec_test.go │ │ ├── option.go │ │ ├── option_test.go │ │ ├── pb_descriptor_provider.go │ │ ├── pbidl_provider.go │ │ ├── pbidl_provider_test.go │ │ ├── proto/ │ │ │ ├── json.go │ │ │ ├── json_test.go │ │ │ ├── protobuf.go │ │ │ ├── raw.go │ │ │ ├── raw_test.go │ │ │ └── type.go │ │ ├── reflect_test/ │ │ │ ├── idl/ │ │ │ │ ├── base.thrift │ │ │ │ ├── example.thrift │ │ │ │ └── self_ref.thrift │ │ │ ├── map_test.go │ │ │ └── reflect_test.go │ │ ├── streaming.go │ │ ├── thrift/ │ │ │ ├── base.go │ │ │ ├── base_test.go │ │ │ ├── binary.go │ │ │ ├── http.go │ │ │ ├── http_pb.go │ │ │ ├── json.go │ │ │ ├── parse.go │ │ │ ├── parse_option.go │ │ │ ├── parse_test.go │ │ │ ├── raw.go │ │ │ ├── raw_test.go │ │ │ ├── read.go │ │ │ ├── read_test.go │ │ │ ├── struct.go │ │ │ ├── thrift.go │ │ │ ├── util.go │ │ │ ├── util_test.go │ │ │ ├── write.go │ │ │ └── write_test.go │ │ ├── thriftidl_provider.go │ │ ├── thriftidl_provider_option.go │ │ └── thriftidl_provider_test.go │ ├── gofunc/ │ │ ├── go.go │ │ └── go_test.go │ ├── http/ │ │ ├── resolver.go │ │ └── resolver_test.go │ ├── kerrors/ │ │ ├── bizerrors.go │ │ ├── bizerrors_test.go │ │ ├── kerrors.go │ │ ├── kerrors_test.go │ │ └── streaming_errors.go │ ├── klog/ │ │ ├── default.go │ │ ├── default_test.go │ │ └── log.go │ ├── limit/ │ │ ├── limit.go │ │ └── limit_test.go │ ├── limiter/ │ │ ├── connection_limiter.go │ │ ├── connection_limiter_test.go │ │ ├── dummy.go │ │ ├── item_limiter.go │ │ ├── limiter.go │ │ ├── limiter_test.go │ │ ├── qps_limiter.go │ │ └── qps_limiter_test.go │ ├── loadbalance/ │ │ ├── consist.go │ │ ├── consist_test.go │ │ ├── dummy_picker.go │ │ ├── interleaved_weighted_round_robin.go │ │ ├── iterator.go │ │ ├── lbcache/ │ │ │ ├── cache.go │ │ │ ├── cache_test.go │ │ │ ├── hookable.go │ │ │ ├── hookable_test.go │ │ │ └── shared_ticker.go │ │ ├── loadbalancer.go │ │ ├── weighted_balancer.go │ │ ├── weighted_balancer_test.go │ │ ├── weighted_random.go │ │ ├── weighted_random_with_alias_method.go │ │ ├── weighted_round_robin.go │ │ └── weighted_round_robin_test.go │ ├── logid/ │ │ ├── logid.go │ │ ├── streaming.go │ │ └── streaming_test.go │ ├── mem/ │ │ ├── span.go │ │ └── span_test.go │ ├── profiler/ │ │ ├── profiler.go │ │ └── profiler_test.go │ ├── protocol/ │ │ └── bthrift/ │ │ ├── README.md │ │ ├── apache/ │ │ │ ├── apache.go │ │ │ ├── apache_test.go │ │ │ ├── binary_protocol.go │ │ │ ├── binary_protocol_test.go │ │ │ └── thrift.go │ │ ├── binary.go │ │ ├── binary_test.go │ │ ├── go.mod │ │ ├── go.sum │ │ ├── interface.go │ │ ├── internal/ │ │ │ └── test/ │ │ │ ├── README.md │ │ │ ├── assert.go │ │ │ └── assert_test.go │ │ ├── unknown.go │ │ └── unknown_test.go │ ├── proxy/ │ │ └── proxy.go │ ├── registry/ │ │ └── registry.go │ ├── remote/ │ │ ├── bound/ │ │ │ ├── limiter_inbound.go │ │ │ ├── limiter_inbound_test.go │ │ │ ├── transmeta_bound.go │ │ │ └── transmeta_bound_test.go │ │ ├── bufiox2buffer.go │ │ ├── bytebuf.go │ │ ├── codec/ │ │ │ ├── bytebuf_util.go │ │ │ ├── default_codec.go │ │ │ ├── default_codec_test.go │ │ │ ├── grpc/ │ │ │ │ ├── grpc.go │ │ │ │ ├── grpc_compress.go │ │ │ │ └── grpc_test.go │ │ │ ├── header_codec.go │ │ │ ├── header_codec_test.go │ │ │ ├── perrors/ │ │ │ │ ├── protocol_error.go │ │ │ │ └── protocol_error_test.go │ │ │ ├── protobuf/ │ │ │ │ ├── encoding/ │ │ │ │ │ ├── encoding.go │ │ │ │ │ └── gzip/ │ │ │ │ │ └── gzip.go │ │ │ │ ├── error.pb.go │ │ │ │ ├── error.proto │ │ │ │ ├── pberror.go │ │ │ │ ├── protobuf.go │ │ │ │ ├── protobuf_test.go │ │ │ │ ├── test.pb.go │ │ │ │ └── test.proto │ │ │ ├── thrift/ │ │ │ │ ├── codec.go │ │ │ │ ├── codec_apache.go │ │ │ │ ├── codec_apache_test.go │ │ │ │ ├── codec_fast.go │ │ │ │ ├── codec_frugal.go │ │ │ │ ├── codec_frugal_test.go │ │ │ │ ├── thrift.go │ │ │ │ ├── thrift_data.go │ │ │ │ ├── thrift_data_test.go │ │ │ │ └── thrift_test.go │ │ │ ├── util.go │ │ │ ├── util_test.go │ │ │ ├── validate.go │ │ │ └── validate_test.go │ │ ├── codec.go │ │ ├── compression.go │ │ ├── connpool/ │ │ │ ├── dummy.go │ │ │ ├── long_pool.go │ │ │ ├── long_pool_test.go │ │ │ ├── reporter.go │ │ │ ├── short_pool.go │ │ │ ├── short_pool_test.go │ │ │ └── utils.go │ │ ├── connpool.go │ │ ├── custom_meta_handler.go │ │ ├── custom_meta_handler_test.go │ │ ├── default_bytebuf.go │ │ ├── default_bytebuf_test.go │ │ ├── dialer.go │ │ ├── doc.go │ │ ├── message.go │ │ ├── option.go │ │ ├── payload_codec.go │ │ ├── profiler_meta.go │ │ ├── remotecli/ │ │ │ ├── client.go │ │ │ ├── client_test.go │ │ │ ├── conn_wrapper.go │ │ │ ├── conn_wrapper_test.go │ │ │ ├── stream.go │ │ │ └── stream_test.go │ │ ├── remotesvr/ │ │ │ ├── server.go │ │ │ └── server_test.go │ │ ├── role.go │ │ ├── trans/ │ │ │ ├── common.go │ │ │ ├── default_client_handler.go │ │ │ ├── default_client_handler_test.go │ │ │ ├── default_server_handler.go │ │ │ ├── default_server_handler_test.go │ │ │ ├── detection/ │ │ │ │ ├── noop.go │ │ │ │ ├── server_handler.go │ │ │ │ └── server_handler_test.go │ │ │ ├── gonet/ │ │ │ │ ├── bytebuffer.go │ │ │ │ ├── bytebuffer_test.go │ │ │ │ ├── client_handler.go │ │ │ │ ├── conn.go │ │ │ │ ├── conn_extension.go │ │ │ │ ├── conn_extension_test.go │ │ │ │ ├── conn_test.go │ │ │ │ ├── dialer.go │ │ │ │ ├── mocks_test.go │ │ │ │ ├── server_handler.go │ │ │ │ ├── server_handler_test.go │ │ │ │ ├── trans_server.go │ │ │ │ └── trans_server_test.go │ │ │ ├── invoke/ │ │ │ │ ├── conn_extension.go │ │ │ │ ├── conn_extension_test.go │ │ │ │ ├── invoke.go │ │ │ │ ├── invoke_handler.go │ │ │ │ ├── invoke_handler_test.go │ │ │ │ ├── message.go │ │ │ │ └── message_test.go │ │ │ ├── listen_config.go │ │ │ ├── listen_config_windows.go │ │ │ ├── mocks_test.go │ │ │ ├── netpoll/ │ │ │ │ ├── bytebuf.go │ │ │ │ ├── bytebuf_test.go │ │ │ │ ├── client_handler.go │ │ │ │ ├── conn_extension.go │ │ │ │ ├── dialer.go │ │ │ │ ├── http_client.go │ │ │ │ ├── http_client_handler.go │ │ │ │ ├── http_client_handler_test.go │ │ │ │ ├── mocks_test.go │ │ │ │ ├── server_handler.go │ │ │ │ ├── server_handler_test.go │ │ │ │ ├── trans_server.go │ │ │ │ └── trans_server_test.go │ │ │ ├── netpollmux/ │ │ │ │ ├── client_handler.go │ │ │ │ ├── client_handler_test.go │ │ │ │ ├── control_frame.go │ │ │ │ ├── doc.go │ │ │ │ ├── mocks_test.go │ │ │ │ ├── mux_conn.go │ │ │ │ ├── mux_conn_test.go │ │ │ │ ├── mux_pool.go │ │ │ │ ├── mux_pool_test.go │ │ │ │ ├── mux_transport.go │ │ │ │ ├── mux_transport_test.go │ │ │ │ ├── server_handler.go │ │ │ │ ├── server_handler_test.go │ │ │ │ ├── shard_map.go │ │ │ │ └── shard_map_test.go │ │ │ ├── nphttp2/ │ │ │ │ ├── buffer.go │ │ │ │ ├── buffer_test.go │ │ │ │ ├── client_conn.go │ │ │ │ ├── client_conn_test.go │ │ │ │ ├── client_handler.go │ │ │ │ ├── client_handler_test.go │ │ │ │ ├── codes/ │ │ │ │ │ ├── code_string.go │ │ │ │ │ ├── codes.go │ │ │ │ │ └── codes_test.go │ │ │ │ ├── codes.go │ │ │ │ ├── codes_test.go │ │ │ │ ├── conn_pool.go │ │ │ │ ├── conn_pool_test.go │ │ │ │ ├── doc.go │ │ │ │ ├── grpc/ │ │ │ │ │ ├── bdp_estimator.go │ │ │ │ │ ├── bdp_estimator_test.go │ │ │ │ │ ├── context.go │ │ │ │ │ ├── context_test.go │ │ │ │ │ ├── controlbuf.go │ │ │ │ │ ├── controlbuf_test.go │ │ │ │ │ ├── defaults.go │ │ │ │ │ ├── doc.go │ │ │ │ │ ├── flowcontrol.go │ │ │ │ │ ├── flowcontrol_test.go │ │ │ │ │ ├── framer.go │ │ │ │ │ ├── graceful_shutdown_test.go │ │ │ │ │ ├── grpcframe/ │ │ │ │ │ │ ├── errors.go │ │ │ │ │ │ ├── errors_test.go │ │ │ │ │ │ ├── frame_parser.go │ │ │ │ │ │ ├── frame_reader.go │ │ │ │ │ │ ├── frame_reader_test.go │ │ │ │ │ │ └── frame_writer.go │ │ │ │ │ ├── http2_client.go │ │ │ │ │ ├── http2_server.go │ │ │ │ │ ├── http_util.go │ │ │ │ │ ├── http_util_test.go │ │ │ │ │ ├── keepalive.go │ │ │ │ │ ├── keepalive_test.go │ │ │ │ │ ├── mocks_test.go │ │ │ │ │ ├── syscall/ │ │ │ │ │ │ ├── syscall_linux.go │ │ │ │ │ │ └── syscall_nonlinux.go │ │ │ │ │ ├── testutils/ │ │ │ │ │ │ ├── channel.go │ │ │ │ │ │ ├── leakcheck/ │ │ │ │ │ │ │ ├── leakcheck.go │ │ │ │ │ │ │ └── leakcheck_test.go │ │ │ │ │ │ ├── status_equal.go │ │ │ │ │ │ └── status_equal_test.go │ │ │ │ │ ├── trace.go │ │ │ │ │ ├── trace_test.go │ │ │ │ │ ├── transport.go │ │ │ │ │ └── transport_test.go │ │ │ │ ├── meta_api.go │ │ │ │ ├── meta_api_test.go │ │ │ │ ├── metadata/ │ │ │ │ │ ├── metadata.go │ │ │ │ │ └── metadata_test.go │ │ │ │ ├── mocks_test.go │ │ │ │ ├── peer/ │ │ │ │ │ ├── peer.go │ │ │ │ │ └── peer_test.go │ │ │ │ ├── server_conn.go │ │ │ │ ├── server_conn_test.go │ │ │ │ ├── server_handler.go │ │ │ │ ├── server_handler_test.go │ │ │ │ ├── status/ │ │ │ │ │ ├── mock_test.go │ │ │ │ │ ├── status.go │ │ │ │ │ └── status_test.go │ │ │ │ ├── stream.go │ │ │ │ └── stream_test.go │ │ │ └── ttstream/ │ │ │ ├── client_handler.go │ │ │ ├── client_handler_option.go │ │ │ ├── client_stream_cleanup.go │ │ │ ├── client_trans_pool.go │ │ │ ├── client_trans_pool_longconn.go │ │ │ ├── client_trans_pool_muxconn.go │ │ │ ├── client_trans_pool_shortconn.go │ │ │ ├── container/ │ │ │ │ ├── linklist.go │ │ │ │ ├── object_pool.go │ │ │ │ ├── object_pool_test.go │ │ │ │ ├── pipe.go │ │ │ │ ├── pipe_test.go │ │ │ │ ├── queue.go │ │ │ │ ├── queue_test.go │ │ │ │ ├── stack.go │ │ │ │ └── stack_test.go │ │ │ ├── context.go │ │ │ ├── exception.go │ │ │ ├── exception_test.go │ │ │ ├── frame.go │ │ │ ├── frame_handler.go │ │ │ ├── frame_test.go │ │ │ ├── metadata.go │ │ │ ├── mock_test.go │ │ │ ├── server_handler.go │ │ │ ├── server_handler_option.go │ │ │ ├── server_handler_test.go │ │ │ ├── stream.go │ │ │ ├── stream_client.go │ │ │ ├── stream_client_test.go │ │ │ ├── stream_reader.go │ │ │ ├── stream_reader_test.go │ │ │ ├── stream_server.go │ │ │ ├── stream_server_test.go │ │ │ ├── stream_test.go │ │ │ ├── stream_writer.go │ │ │ ├── test_utils.go │ │ │ ├── trace_test.go │ │ │ ├── transport.go │ │ │ ├── transport_buffer.go │ │ │ ├── transport_buffer_test.go │ │ │ ├── transport_client.go │ │ │ ├── transport_server.go │ │ │ └── transport_test.go │ │ ├── trans_errors.go │ │ ├── trans_errors_test.go │ │ ├── trans_handler.go │ │ ├── trans_meta.go │ │ ├── trans_pipeline.go │ │ ├── trans_server.go │ │ └── transmeta/ │ │ ├── http_metakey.go │ │ └── metakey.go │ ├── retry/ │ │ ├── backup.go │ │ ├── backup_retryer.go │ │ ├── backup_test.go │ │ ├── failure.go │ │ ├── failure_retryer.go │ │ ├── failure_test.go │ │ ├── item_retry.go │ │ ├── mixed.go │ │ ├── mixed_retryer.go │ │ ├── mixed_test.go │ │ ├── percentage_limit.go │ │ ├── policy.go │ │ ├── policy_test.go │ │ ├── retryer.go │ │ ├── retryer_test.go │ │ ├── util.go │ │ └── util_test.go │ ├── rpcinfo/ │ │ ├── basicinfo.go │ │ ├── convert.go │ │ ├── convert_test.go │ │ ├── copy.go │ │ ├── copy_test.go │ │ ├── ctx.go │ │ ├── ctx_test.go │ │ ├── endpointInfo.go │ │ ├── endpointInfo_test.go │ │ ├── interface.go │ │ ├── invocation.go │ │ ├── invocation_test.go │ │ ├── mocks_test.go │ │ ├── mutable.go │ │ ├── remoteinfo/ │ │ │ ├── remoteInfo.go │ │ │ └── remoteInfo_test.go │ │ ├── rpcconfig.go │ │ ├── rpcconfig_test.go │ │ ├── rpcinfo.go │ │ ├── rpcinfo_test.go │ │ ├── rpcstats.go │ │ ├── rpcstats_test.go │ │ ├── stats_util.go │ │ ├── stats_util_test.go │ │ ├── stream_tracer.go │ │ ├── stream_tracer_test.go │ │ ├── tracer.go │ │ └── tracer_test.go │ ├── rpctimeout/ │ │ ├── item_rpc_timeout.go │ │ └── rpctimeout.go │ ├── serviceinfo/ │ │ ├── serviceinfo.go │ │ └── serviceinfo_test.go │ ├── stats/ │ │ ├── event.go │ │ ├── event_test.go │ │ ├── status.go │ │ └── tracer.go │ ├── streaming/ │ │ ├── context.go │ │ ├── streaming.go │ │ ├── streamx.go │ │ ├── timeout.go │ │ ├── timeout_test.go │ │ ├── util.go │ │ └── util_test.go │ ├── transmeta/ │ │ ├── http2.go │ │ ├── http2_test.go │ │ ├── metainfo.go │ │ ├── metainfo_test.go │ │ ├── ttheader.go │ │ └── ttheader_test.go │ ├── utils/ │ │ ├── byte2str.go │ │ ├── byte2str_test.go │ │ ├── config.go │ │ ├── config_test.go │ │ ├── contextmap/ │ │ │ ├── contextmap.go │ │ │ └── contextmap_test.go │ │ ├── counter.go │ │ ├── counter_test.go │ │ ├── err_chain.go │ │ ├── err_chain_test.go │ │ ├── fastthrift/ │ │ │ ├── fastthrift.go │ │ │ └── fastthrift_test.go │ │ ├── func.go │ │ ├── func_test.go │ │ ├── int_len.go │ │ ├── int_len_test.go │ │ ├── interface.go │ │ ├── json.go │ │ ├── json_fuzz_test.go │ │ ├── json_sonic.go │ │ ├── json_test.go │ │ ├── kitexutil/ │ │ │ ├── kitexutil.go │ │ │ └── kitexutil_test.go │ │ ├── max_counter.go │ │ ├── max_counter_test.go │ │ ├── netaddr.go │ │ ├── netaddr_test.go │ │ ├── ring.go │ │ ├── ring_single.go │ │ ├── ring_test.go │ │ ├── rpcstats.go │ │ ├── rpcstats_test.go │ │ ├── runtimex.go │ │ ├── runtimex_test.go │ │ ├── sharedticker.go │ │ ├── sharedticker_test.go │ │ ├── slice.go │ │ ├── slice_test.go │ │ ├── strbuf.go │ │ ├── strbuf_test.go │ │ ├── strings.go │ │ ├── strings_test.go │ │ ├── thrift.go │ │ ├── thrift_test.go │ │ ├── yaml.go │ │ └── yaml_test.go │ ├── warmup/ │ │ ├── pool_helper.go │ │ ├── pool_helper_test.go │ │ └── warmup.go │ └── xds/ │ └── xds.go ├── scripts/ │ ├── .utils/ │ │ ├── check_go_mod.sh │ │ ├── check_version.sh │ │ └── funcs.sh │ ├── release-hotfix.sh │ └── release.sh ├── server/ │ ├── deprecated.go │ ├── genericserver/ │ │ ├── server.go │ │ ├── server_test.go │ │ └── unknownservice.go │ ├── hooks.go │ ├── invoke/ │ │ ├── message.go │ │ └── message_test.go │ ├── invoke.go │ ├── invoke_test.go │ ├── middlewares.go │ ├── middlewares_test.go │ ├── mocks_test.go │ ├── option.go │ ├── option_advanced.go │ ├── option_advanced_test.go │ ├── option_stream.go │ ├── option_stream_test.go │ ├── option_test.go │ ├── option_ttstream.go │ ├── option_unary.go │ ├── register_option.go │ ├── register_option_test.go │ ├── server.go │ ├── server_test.go │ ├── service.go │ ├── service_inline.go │ ├── service_inline_test.go │ ├── service_test.go │ ├── stream.go │ └── stream_test.go ├── tool/ │ ├── cmd/ │ │ └── kitex/ │ │ ├── args/ │ │ │ ├── args.go │ │ │ ├── args_test.go │ │ │ ├── deprecated.go │ │ │ └── deprecated_test.go │ │ ├── main.go │ │ ├── sdk/ │ │ │ └── kitex_sdk.go │ │ ├── utils/ │ │ │ └── utils.go │ │ └── versions/ │ │ ├── dependencies.go │ │ ├── dependencies_test.go │ │ ├── version.go │ │ └── version_test.go │ └── internal_pkg/ │ ├── doc.go │ ├── generator/ │ │ ├── completer.go │ │ ├── custom_template.go │ │ ├── feature.go │ │ ├── generator.go │ │ ├── generator_test.go │ │ ├── template.go │ │ ├── template_test.go │ │ ├── type.go │ │ └── type_test.go │ ├── log/ │ │ └── log.go │ ├── pluginmode/ │ │ ├── protoc/ │ │ │ ├── plugin.go │ │ │ ├── protoc.go │ │ │ └── util.go │ │ └── thriftgo/ │ │ ├── ast.go │ │ ├── convertor.go │ │ ├── file_tpl.go │ │ ├── hessian2.go │ │ ├── hessian2_test.go │ │ ├── patcher.go │ │ ├── plugin.go │ │ ├── register_tpl.go │ │ └── struct_tpl.go │ ├── prutal/ │ │ ├── prutal.go │ │ └── prutal_test.go │ ├── tpl/ │ │ ├── bootstrap.sh.go │ │ ├── build.sh.go │ │ ├── client.go │ │ ├── client_v2.go │ │ ├── handler.go │ │ ├── handler.method.go │ │ ├── invoker.go │ │ ├── main.go │ │ ├── pbtpl/ │ │ │ ├── pbtpl.go │ │ │ └── pbtpl_test.go │ │ ├── server.go │ │ ├── service.go │ │ ├── service_v2.go │ │ ├── templates_test.go │ │ └── tool_version.go │ └── util/ │ ├── dump.go │ ├── env/ │ │ ├── env.go │ │ └── env_test.go │ ├── util.go │ └── util_test.go ├── transport/ │ └── keys.go └── version.go