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 \