From 229de2530b9f0b5dee660942cef2333e20cd747d Mon Sep 17 00:00:00 2001 From: Tanvi Jagtap <139093547+tanvi-jagtap@users.noreply.github.com> Date: Mon, 30 Sep 2024 22:31:47 -0700 Subject: [PATCH] [PH2][Refactor] Creating call_tracer_wrapper.h . (#37786) [PH2][Refactor] Creating call_tracer_wrapper.h and cc and moving code as-is into it. The content of the functions or classes has not changed. In the next few iterations, more code will come into this file. Closes #37786 COPYBARA_INTEGRATE_REVIEW=https://github.com/grpc/grpc/pull/37786 from tanvi-jagtap:ph2_internal_h_split_01 31af14a4e76eb67fadab37d5e5522b4637b5b511 PiperOrigin-RevId: 680861154 --- BUILD | 2 + CMakeLists.txt | 2 + Makefile | 1 + Package.swift | 2 + build_autogenerated.yaml | 4 ++ config.m4 | 1 + config.w32 | 1 + gRPC-C++.podspec | 2 + gRPC-Core.podspec | 3 + grpc.gemspec | 2 + package.xml | 2 + .../chttp2/transport/call_tracer_wrapper.cc | 53 ++++++++++++++ .../chttp2/transport/call_tracer_wrapper.h | 72 +++++++++++++++++++ .../chttp2/transport/chttp2_transport.cc | 29 +------- .../transport/chttp2/transport/frame_data.cc | 1 + .../chttp2/transport/frame_rst_stream.cc | 1 + .../chttp2/transport/frame_window_update.cc | 1 + .../ext/transport/chttp2/transport/internal.h | 46 +----------- .../ext/transport/chttp2/transport/parsing.cc | 1 + .../ext/transport/chttp2/transport/writing.cc | 1 + src/python/grpcio/grpc_core_dependencies.py | 1 + tools/doxygen/Doxyfile.c++.internal | 2 + tools/doxygen/Doxyfile.core.internal | 2 + 23 files changed, 159 insertions(+), 73 deletions(-) create mode 100644 src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc create mode 100644 src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h diff --git a/BUILD b/BUILD index 0a0a13ee09199..51633565bb371 100644 --- a/BUILD +++ b/BUILD @@ -4763,6 +4763,7 @@ grpc_cc_library( name = "grpc_transport_chttp2", srcs = [ "//src/core:ext/transport/chttp2/transport/bin_decoder.cc", + "//src/core:ext/transport/chttp2/transport/call_tracer_wrapper.cc", "//src/core:ext/transport/chttp2/transport/chttp2_transport.cc", "//src/core:ext/transport/chttp2/transport/frame_data.cc", "//src/core:ext/transport/chttp2/transport/frame_goaway.cc", @@ -4776,6 +4777,7 @@ grpc_cc_library( ], hdrs = [ "//src/core:ext/transport/chttp2/transport/bin_decoder.h", + "//src/core:ext/transport/chttp2/transport/call_tracer_wrapper.h", "//src/core:ext/transport/chttp2/transport/chttp2_transport.h", "//src/core:ext/transport/chttp2/transport/frame_data.h", "//src/core:ext/transport/chttp2/transport/frame_goaway.h", diff --git a/CMakeLists.txt b/CMakeLists.txt index 85b51d334d281..99147ab3f3139 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1907,6 +1907,7 @@ add_library(grpc src/core/ext/transport/chttp2/server/chttp2_server.cc src/core/ext/transport/chttp2/transport/bin_decoder.cc src/core/ext/transport/chttp2/transport/bin_encoder.cc + src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc src/core/ext/transport/chttp2/transport/chttp2_transport.cc src/core/ext/transport/chttp2/transport/decode_huff.cc src/core/ext/transport/chttp2/transport/flow_control.cc @@ -3015,6 +3016,7 @@ add_library(grpc_unsecure src/core/ext/transport/chttp2/server/chttp2_server.cc src/core/ext/transport/chttp2/transport/bin_decoder.cc src/core/ext/transport/chttp2/transport/bin_encoder.cc + src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc src/core/ext/transport/chttp2/transport/chttp2_transport.cc src/core/ext/transport/chttp2/transport/decode_huff.cc src/core/ext/transport/chttp2/transport/flow_control.cc diff --git a/Makefile b/Makefile index 028c9f9009008..b33a29370b970 100644 --- a/Makefile +++ b/Makefile @@ -711,6 +711,7 @@ LIBGRPC_SRC = \ src/core/ext/transport/chttp2/server/chttp2_server.cc \ src/core/ext/transport/chttp2/transport/bin_decoder.cc \ src/core/ext/transport/chttp2/transport/bin_encoder.cc \ + src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc \ src/core/ext/transport/chttp2/transport/chttp2_transport.cc \ src/core/ext/transport/chttp2/transport/decode_huff.cc \ src/core/ext/transport/chttp2/transport/flow_control.cc \ diff --git a/Package.swift b/Package.swift index c21dedc5f8be2..f1e60c511ca94 100644 --- a/Package.swift +++ b/Package.swift @@ -210,6 +210,8 @@ let package = Package( "src/core/ext/transport/chttp2/transport/bin_decoder.h", "src/core/ext/transport/chttp2/transport/bin_encoder.cc", "src/core/ext/transport/chttp2/transport/bin_encoder.h", + "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc", + "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h", "src/core/ext/transport/chttp2/transport/chttp2_transport.cc", "src/core/ext/transport/chttp2/transport/chttp2_transport.h", "src/core/ext/transport/chttp2/transport/context_list_entry.h", diff --git a/build_autogenerated.yaml b/build_autogenerated.yaml index b45eb26192f23..1dd0e4f335ff3 100644 --- a/build_autogenerated.yaml +++ b/build_autogenerated.yaml @@ -267,6 +267,7 @@ libs: - src/core/ext/transport/chttp2/server/chttp2_server.h - src/core/ext/transport/chttp2/transport/bin_decoder.h - src/core/ext/transport/chttp2/transport/bin_encoder.h + - src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h - src/core/ext/transport/chttp2/transport/chttp2_transport.h - src/core/ext/transport/chttp2/transport/context_list_entry.h - src/core/ext/transport/chttp2/transport/decode_huff.h @@ -1317,6 +1318,7 @@ libs: - src/core/ext/transport/chttp2/server/chttp2_server.cc - src/core/ext/transport/chttp2/transport/bin_decoder.cc - src/core/ext/transport/chttp2/transport/bin_encoder.cc + - src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc - src/core/ext/transport/chttp2/transport/chttp2_transport.cc - src/core/ext/transport/chttp2/transport/decode_huff.cc - src/core/ext/transport/chttp2/transport/flow_control.cc @@ -2294,6 +2296,7 @@ libs: - src/core/ext/transport/chttp2/server/chttp2_server.h - src/core/ext/transport/chttp2/transport/bin_decoder.h - src/core/ext/transport/chttp2/transport/bin_encoder.h + - src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h - src/core/ext/transport/chttp2/transport/chttp2_transport.h - src/core/ext/transport/chttp2/transport/context_list_entry.h - src/core/ext/transport/chttp2/transport/decode_huff.h @@ -2776,6 +2779,7 @@ libs: - src/core/ext/transport/chttp2/server/chttp2_server.cc - src/core/ext/transport/chttp2/transport/bin_decoder.cc - src/core/ext/transport/chttp2/transport/bin_encoder.cc + - src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc - src/core/ext/transport/chttp2/transport/chttp2_transport.cc - src/core/ext/transport/chttp2/transport/decode_huff.cc - src/core/ext/transport/chttp2/transport/flow_control.cc diff --git a/config.m4 b/config.m4 index 9bc1a068f3f21..cd9212d357242 100644 --- a/config.m4 +++ b/config.m4 @@ -86,6 +86,7 @@ if test "$PHP_GRPC" != "no"; then src/core/ext/transport/chttp2/server/chttp2_server.cc \ src/core/ext/transport/chttp2/transport/bin_decoder.cc \ src/core/ext/transport/chttp2/transport/bin_encoder.cc \ + src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc \ src/core/ext/transport/chttp2/transport/chttp2_transport.cc \ src/core/ext/transport/chttp2/transport/decode_huff.cc \ src/core/ext/transport/chttp2/transport/flow_control.cc \ diff --git a/config.w32 b/config.w32 index f1f0df73b811a..b590018a1bda1 100644 --- a/config.w32 +++ b/config.w32 @@ -51,6 +51,7 @@ if (PHP_GRPC != "no") { "src\\core\\ext\\transport\\chttp2\\server\\chttp2_server.cc " + "src\\core\\ext\\transport\\chttp2\\transport\\bin_decoder.cc " + "src\\core\\ext\\transport\\chttp2\\transport\\bin_encoder.cc " + + "src\\core\\ext\\transport\\chttp2\\transport\\call_tracer_wrapper.cc " + "src\\core\\ext\\transport\\chttp2\\transport\\chttp2_transport.cc " + "src\\core\\ext\\transport\\chttp2\\transport\\decode_huff.cc " + "src\\core\\ext\\transport\\chttp2\\transport\\flow_control.cc " + diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec index abca293e11355..aeb929b9ad68f 100644 --- a/gRPC-C++.podspec +++ b/gRPC-C++.podspec @@ -356,6 +356,7 @@ Pod::Spec.new do |s| 'src/core/ext/transport/chttp2/server/chttp2_server.h', 'src/core/ext/transport/chttp2/transport/bin_decoder.h', 'src/core/ext/transport/chttp2/transport/bin_encoder.h', + 'src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h', 'src/core/ext/transport/chttp2/transport/chttp2_transport.h', 'src/core/ext/transport/chttp2/transport/context_list_entry.h', 'src/core/ext/transport/chttp2/transport/decode_huff.h', @@ -1660,6 +1661,7 @@ Pod::Spec.new do |s| 'src/core/ext/transport/chttp2/server/chttp2_server.h', 'src/core/ext/transport/chttp2/transport/bin_decoder.h', 'src/core/ext/transport/chttp2/transport/bin_encoder.h', + 'src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h', 'src/core/ext/transport/chttp2/transport/chttp2_transport.h', 'src/core/ext/transport/chttp2/transport/context_list_entry.h', 'src/core/ext/transport/chttp2/transport/decode_huff.h', diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec index 48543720dee86..26ed8c8dfabb0 100644 --- a/gRPC-Core.podspec +++ b/gRPC-Core.podspec @@ -330,6 +330,8 @@ Pod::Spec.new do |s| 'src/core/ext/transport/chttp2/transport/bin_decoder.h', 'src/core/ext/transport/chttp2/transport/bin_encoder.cc', 'src/core/ext/transport/chttp2/transport/bin_encoder.h', + 'src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc', + 'src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h', 'src/core/ext/transport/chttp2/transport/chttp2_transport.cc', 'src/core/ext/transport/chttp2/transport/chttp2_transport.h', 'src/core/ext/transport/chttp2/transport/context_list_entry.h', @@ -2448,6 +2450,7 @@ Pod::Spec.new do |s| 'src/core/ext/transport/chttp2/server/chttp2_server.h', 'src/core/ext/transport/chttp2/transport/bin_decoder.h', 'src/core/ext/transport/chttp2/transport/bin_encoder.h', + 'src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h', 'src/core/ext/transport/chttp2/transport/chttp2_transport.h', 'src/core/ext/transport/chttp2/transport/context_list_entry.h', 'src/core/ext/transport/chttp2/transport/decode_huff.h', diff --git a/grpc.gemspec b/grpc.gemspec index 7c4645fc5d2fd..349abdf9586bc 100644 --- a/grpc.gemspec +++ b/grpc.gemspec @@ -216,6 +216,8 @@ Gem::Specification.new do |s| s.files += %w( src/core/ext/transport/chttp2/transport/bin_decoder.h ) s.files += %w( src/core/ext/transport/chttp2/transport/bin_encoder.cc ) s.files += %w( src/core/ext/transport/chttp2/transport/bin_encoder.h ) + s.files += %w( src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc ) + s.files += %w( src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h ) s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_transport.cc ) s.files += %w( src/core/ext/transport/chttp2/transport/chttp2_transport.h ) s.files += %w( src/core/ext/transport/chttp2/transport/context_list_entry.h ) diff --git a/package.xml b/package.xml index 69833761539db..3add46c2e4071 100644 --- a/package.xml +++ b/package.xml @@ -198,6 +198,8 @@ + + diff --git a/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc b/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc new file mode 100644 index 0000000000000..476f7844cd1d1 --- /dev/null +++ b/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc @@ -0,0 +1,53 @@ +// +// +// Copyright 2024 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// + +#include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" + +#include "src/core/ext/transport/chttp2/transport/internal.h" + +namespace grpc_core { + +void Chttp2CallTracerWrapper::RecordIncomingBytes( + const CallTracerInterface::TransportByteSize& transport_byte_size) { + // Update legacy API. + stream_->stats.incoming.framing_bytes += transport_byte_size.framing_bytes; + stream_->stats.incoming.data_bytes += transport_byte_size.data_bytes; + stream_->stats.incoming.header_bytes += transport_byte_size.header_bytes; + // Update new API. + if (!IsCallTracerInTransportEnabled()) return; + auto* call_tracer = stream_->arena->GetContext(); + if (call_tracer != nullptr) { + call_tracer->RecordIncomingBytes(transport_byte_size); + } +} + +void Chttp2CallTracerWrapper::RecordOutgoingBytes( + const CallTracerInterface::TransportByteSize& transport_byte_size) { + // Update legacy API. + stream_->stats.outgoing.framing_bytes += transport_byte_size.framing_bytes; + stream_->stats.outgoing.data_bytes += transport_byte_size.data_bytes; + stream_->stats.outgoing.header_bytes += + transport_byte_size.header_bytes; // Update new API. + if (!IsCallTracerInTransportEnabled()) return; + auto* call_tracer = stream_->arena->GetContext(); + if (call_tracer != nullptr) { + call_tracer->RecordOutgoingBytes(transport_byte_size); + } +} + +} // namespace grpc_core \ No newline at end of file diff --git a/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h b/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h new file mode 100644 index 0000000000000..cf535afc6cdf6 --- /dev/null +++ b/src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h @@ -0,0 +1,72 @@ +// +// +// Copyright 2024 gRPC authors. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +// + +#ifndef GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CALL_TRACER_WRAPPER_H +#define GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CALL_TRACER_WRAPPER_H + +#include "src/core/lib/transport/transport.h" +#include "src/core/telemetry/call_tracer.h" + +struct grpc_chttp2_stream; + +namespace grpc_core { + +// A CallTracer wrapper that updates both the legacy and new APIs for +// transport byte sizes. +// TODO(ctiller): This can go away as part of removing the +// grpc_transport_stream_stats struct. +class Chttp2CallTracerWrapper final : public CallTracerInterface { + public: + explicit Chttp2CallTracerWrapper(grpc_chttp2_stream* stream) + : stream_(stream) {} + + void RecordIncomingBytes( + const TransportByteSize& transport_byte_size) override; + void RecordOutgoingBytes( + const TransportByteSize& transport_byte_size) override; + + // Everything else is a no-op. + void RecordSendInitialMetadata( + grpc_metadata_batch* /*send_initial_metadata*/) override {} + void RecordSendTrailingMetadata( + grpc_metadata_batch* /*send_trailing_metadata*/) override {} + void RecordSendMessage(const SliceBuffer& /*send_message*/) override {} + void RecordSendCompressedMessage( + const SliceBuffer& /*send_compressed_message*/) override {} + void RecordReceivedInitialMetadata( + grpc_metadata_batch* /*recv_initial_metadata*/) override {} + void RecordReceivedMessage(const SliceBuffer& /*recv_message*/) override {} + void RecordReceivedDecompressedMessage( + const SliceBuffer& /*recv_decompressed_message*/) override {} + void RecordCancel(grpc_error_handle /*cancel_error*/) override {} + std::shared_ptr StartNewTcpTrace() override { + return nullptr; + } + void RecordAnnotation(absl::string_view /*annotation*/) override {} + void RecordAnnotation(const Annotation& /*annotation*/) override {} + std::string TraceId() override { return ""; } + std::string SpanId() override { return ""; } + bool IsSampled() override { return false; } + + private: + grpc_chttp2_stream* stream_; +}; + +} // namespace grpc_core + +#endif // GRPC_SRC_CORE_EXT_TRANSPORT_CHTTP2_TRANSPORT_CALL_TRACER_WRAPPER_H diff --git a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc index 97cfe956ba9a7..e4b0b1fdf2595 100644 --- a/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +++ b/src/core/ext/transport/chttp2/transport/chttp2_transport.cc @@ -56,6 +56,7 @@ #include #include +#include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" #include "src/core/ext/transport/chttp2/transport/context_list_entry.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/frame_data.h" @@ -361,34 +362,6 @@ std::string HttpAnnotation::ToString() const { return s; } -void Chttp2CallTracerWrapper::RecordIncomingBytes( - const CallTracerInterface::TransportByteSize& transport_byte_size) { - // Update legacy API. - stream_->stats.incoming.framing_bytes += transport_byte_size.framing_bytes; - stream_->stats.incoming.data_bytes += transport_byte_size.data_bytes; - stream_->stats.incoming.header_bytes += transport_byte_size.header_bytes; - // Update new API. - if (!IsCallTracerInTransportEnabled()) return; - auto* call_tracer = stream_->arena->GetContext(); - if (call_tracer != nullptr) { - call_tracer->RecordIncomingBytes(transport_byte_size); - } -} - -void Chttp2CallTracerWrapper::RecordOutgoingBytes( - const CallTracerInterface::TransportByteSize& transport_byte_size) { - // Update legacy API. - stream_->stats.outgoing.framing_bytes += transport_byte_size.framing_bytes; - stream_->stats.outgoing.data_bytes += transport_byte_size.data_bytes; - stream_->stats.outgoing.header_bytes += - transport_byte_size.header_bytes; // Update new API. - if (!IsCallTracerInTransportEnabled()) return; - auto* call_tracer = stream_->arena->GetContext(); - if (call_tracer != nullptr) { - call_tracer->RecordOutgoingBytes(transport_byte_size); - } -} - } // namespace grpc_core // diff --git a/src/core/ext/transport/chttp2/transport/frame_data.cc b/src/core/ext/transport/chttp2/transport/frame_data.cc index b20f1630adde7..b5bd13d2fc0dd 100644 --- a/src/core/ext/transport/chttp2/transport/frame_data.cc +++ b/src/core/ext/transport/chttp2/transport/frame_data.cc @@ -27,6 +27,7 @@ #include #include +#include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" #include "src/core/ext/transport/chttp2/transport/internal.h" #include "src/core/lib/experiments/experiments.h" #include "src/core/lib/slice/slice.h" diff --git a/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc b/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc index 14d91329eaef9..0e38b36c05c97 100644 --- a/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +++ b/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc @@ -30,6 +30,7 @@ #include #include +#include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" #include "src/core/ext/transport/chttp2/transport/internal.h" #include "src/core/ext/transport/chttp2/transport/legacy_frame.h" #include "src/core/ext/transport/chttp2/transport/ping_callbacks.h" diff --git a/src/core/ext/transport/chttp2/transport/frame_window_update.cc b/src/core/ext/transport/chttp2/transport/frame_window_update.cc index 20cddebd5cacd..5209ab2899a7c 100644 --- a/src/core/ext/transport/chttp2/transport/frame_window_update.cc +++ b/src/core/ext/transport/chttp2/transport/frame_window_update.cc @@ -27,6 +27,7 @@ #include +#include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/internal.h" #include "src/core/ext/transport/chttp2/transport/stream_lists.h" diff --git a/src/core/ext/transport/chttp2/transport/internal.h b/src/core/ext/transport/chttp2/transport/internal.h index bdbbd6890c7e9..76deea4f0432f 100644 --- a/src/core/ext/transport/chttp2/transport/internal.h +++ b/src/core/ext/transport/chttp2/transport/internal.h @@ -41,6 +41,7 @@ #include #include "src/core/channelz/channelz.h" +#include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" #include "src/core/ext/transport/chttp2/transport/context_list_entry.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/frame_goaway.h" @@ -553,51 +554,6 @@ typedef enum { GRPC_METADATA_PUBLISHED_AT_CLOSE } grpc_published_metadata_method; -namespace grpc_core { - -// A CallTracer wrapper that updates both the legacy and new APIs for -// transport byte sizes. -// TODO(ctiller): This can go away as part of removing the -// grpc_transport_stream_stats struct. -class Chttp2CallTracerWrapper final : public CallTracerInterface { - public: - explicit Chttp2CallTracerWrapper(grpc_chttp2_stream* stream) - : stream_(stream) {} - - void RecordIncomingBytes( - const TransportByteSize& transport_byte_size) override; - void RecordOutgoingBytes( - const TransportByteSize& transport_byte_size) override; - - // Everything else is a no-op. - void RecordSendInitialMetadata( - grpc_metadata_batch* /*send_initial_metadata*/) override {} - void RecordSendTrailingMetadata( - grpc_metadata_batch* /*send_trailing_metadata*/) override {} - void RecordSendMessage(const SliceBuffer& /*send_message*/) override {} - void RecordSendCompressedMessage( - const SliceBuffer& /*send_compressed_message*/) override {} - void RecordReceivedInitialMetadata( - grpc_metadata_batch* /*recv_initial_metadata*/) override {} - void RecordReceivedMessage(const SliceBuffer& /*recv_message*/) override {} - void RecordReceivedDecompressedMessage( - const SliceBuffer& /*recv_decompressed_message*/) override {} - void RecordCancel(grpc_error_handle /*cancel_error*/) override {} - std::shared_ptr StartNewTcpTrace() override { - return nullptr; - } - void RecordAnnotation(absl::string_view /*annotation*/) override {} - void RecordAnnotation(const Annotation& /*annotation*/) override {} - std::string TraceId() override { return ""; } - std::string SpanId() override { return ""; } - bool IsSampled() override { return false; } - - private: - grpc_chttp2_stream* stream_; -}; - -} // namespace grpc_core - struct grpc_chttp2_stream { grpc_chttp2_stream(grpc_chttp2_transport* t, grpc_stream_refcount* refcount, const void* server_data, grpc_core::Arena* arena); diff --git a/src/core/ext/transport/chttp2/transport/parsing.cc b/src/core/ext/transport/chttp2/transport/parsing.cc index cd102ff85df2c..e9d746d8e249c 100644 --- a/src/core/ext/transport/chttp2/transport/parsing.cc +++ b/src/core/ext/transport/chttp2/transport/parsing.cc @@ -43,6 +43,7 @@ #include #include "src/core/channelz/channelz.h" +#include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" #include "src/core/ext/transport/chttp2/transport/frame_data.h" #include "src/core/ext/transport/chttp2/transport/frame_goaway.h" diff --git a/src/core/ext/transport/chttp2/transport/writing.cc b/src/core/ext/transport/chttp2/transport/writing.cc index d5678956f5100..583d9eaa03d55 100644 --- a/src/core/ext/transport/chttp2/transport/writing.cc +++ b/src/core/ext/transport/chttp2/transport/writing.cc @@ -37,6 +37,7 @@ #include #include "src/core/channelz/channelz.h" +#include "src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h" #include "src/core/ext/transport/chttp2/transport/chttp2_transport.h" #include "src/core/ext/transport/chttp2/transport/context_list_entry.h" #include "src/core/ext/transport/chttp2/transport/flow_control.h" diff --git a/src/python/grpcio/grpc_core_dependencies.py b/src/python/grpcio/grpc_core_dependencies.py index fde998c3af689..e1bbd06531fd9 100644 --- a/src/python/grpcio/grpc_core_dependencies.py +++ b/src/python/grpcio/grpc_core_dependencies.py @@ -60,6 +60,7 @@ 'src/core/ext/transport/chttp2/server/chttp2_server.cc', 'src/core/ext/transport/chttp2/transport/bin_decoder.cc', 'src/core/ext/transport/chttp2/transport/bin_encoder.cc', + 'src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc', 'src/core/ext/transport/chttp2/transport/chttp2_transport.cc', 'src/core/ext/transport/chttp2/transport/decode_huff.cc', 'src/core/ext/transport/chttp2/transport/flow_control.cc', diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index efef382f3590d..4147fafc791f7 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -1221,6 +1221,8 @@ src/core/ext/transport/chttp2/transport/bin_decoder.cc \ src/core/ext/transport/chttp2/transport/bin_decoder.h \ src/core/ext/transport/chttp2/transport/bin_encoder.cc \ src/core/ext/transport/chttp2/transport/bin_encoder.h \ +src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc \ +src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h \ src/core/ext/transport/chttp2/transport/chttp2_transport.cc \ src/core/ext/transport/chttp2/transport/chttp2_transport.h \ src/core/ext/transport/chttp2/transport/context_list_entry.h \ diff --git a/tools/doxygen/Doxyfile.core.internal b/tools/doxygen/Doxyfile.core.internal index 0471de0c886a7..cf962517d9ead 100644 --- a/tools/doxygen/Doxyfile.core.internal +++ b/tools/doxygen/Doxyfile.core.internal @@ -988,6 +988,8 @@ src/core/ext/transport/chttp2/transport/bin_decoder.cc \ src/core/ext/transport/chttp2/transport/bin_decoder.h \ src/core/ext/transport/chttp2/transport/bin_encoder.cc \ src/core/ext/transport/chttp2/transport/bin_encoder.h \ +src/core/ext/transport/chttp2/transport/call_tracer_wrapper.cc \ +src/core/ext/transport/chttp2/transport/call_tracer_wrapper.h \ src/core/ext/transport/chttp2/transport/chttp2_transport.cc \ src/core/ext/transport/chttp2/transport/chttp2_transport.h \ src/core/ext/transport/chttp2/transport/context_list_entry.h \