Updates CallbackVisitor to accept nghttp2_session_callbacks by const reference.
This is a small quality of life improvement to make integration a bit easier.
PiperOrigin-RevId: 377992441
diff --git a/http2/adapter/callback_visitor.cc b/http2/adapter/callback_visitor.cc
index 8baba58..70fd899 100644
--- a/http2/adapter/callback_visitor.cc
+++ b/http2/adapter/callback_visitor.cc
@@ -36,6 +36,18 @@
namespace http2 {
namespace adapter {
+CallbackVisitor::CallbackVisitor(Perspective perspective,
+ const nghttp2_session_callbacks& callbacks,
+ void* user_data)
+ : perspective_(perspective),
+ callbacks_(MakeCallbacksPtr(nullptr)),
+ user_data_(user_data) {
+ nghttp2_session_callbacks* c;
+ nghttp2_session_callbacks_new(&c);
+ *c = callbacks;
+ callbacks_.reset(c);
+}
+
ssize_t CallbackVisitor::OnReadyToSend(absl::string_view serialized) {
return callbacks_->send_callback(nullptr, ToUint8Ptr(serialized.data()),
serialized.size(), 0, user_data_);
diff --git a/http2/adapter/callback_visitor.h b/http2/adapter/callback_visitor.h
index 5516008..0147d8b 100644
--- a/http2/adapter/callback_visitor.h
+++ b/http2/adapter/callback_visitor.h
@@ -17,11 +17,8 @@
class CallbackVisitor : public Http2VisitorInterface {
public:
explicit CallbackVisitor(Perspective perspective,
- nghttp2_session_callbacks_unique_ptr callbacks,
- void* user_data)
- : perspective_(perspective),
- callbacks_(std::move(callbacks)),
- user_data_(user_data) {}
+ const nghttp2_session_callbacks& callbacks,
+ void* user_data);
ssize_t OnReadyToSend(absl::string_view serialized) override;
void OnConnectionError() override;
diff --git a/http2/adapter/callback_visitor_test.cc b/http2/adapter/callback_visitor_test.cc
index 4dfcb5f..695ad7f 100644
--- a/http2/adapter/callback_visitor_test.cc
+++ b/http2/adapter/callback_visitor_test.cc
@@ -27,7 +27,7 @@
TEST(ClientCallbackVisitorUnitTest, ConnectionFrames) {
testing::StrictMock<MockNghttp2Callbacks> callbacks;
CallbackVisitor visitor(Perspective::kClient,
- MockNghttp2Callbacks::GetCallbacks(), &callbacks);
+ *MockNghttp2Callbacks::GetCallbacks(), &callbacks);
testing::InSequence seq;
@@ -73,7 +73,7 @@
TEST(ClientCallbackVisitorUnitTest, StreamFrames) {
testing::StrictMock<MockNghttp2Callbacks> callbacks;
CallbackVisitor visitor(Perspective::kClient,
- MockNghttp2Callbacks::GetCallbacks(), &callbacks);
+ *MockNghttp2Callbacks::GetCallbacks(), &callbacks);
testing::InSequence seq;
@@ -158,7 +158,7 @@
TEST(ServerCallbackVisitorUnitTest, ConnectionFrames) {
testing::StrictMock<MockNghttp2Callbacks> callbacks;
CallbackVisitor visitor(Perspective::kServer,
- MockNghttp2Callbacks::GetCallbacks(), &callbacks);
+ *MockNghttp2Callbacks::GetCallbacks(), &callbacks);
testing::InSequence seq;
@@ -196,7 +196,7 @@
TEST(ServerCallbackVisitorUnitTest, StreamFrames) {
testing::StrictMock<MockNghttp2Callbacks> callbacks;
CallbackVisitor visitor(Perspective::kServer,
- MockNghttp2Callbacks::GetCallbacks(), &callbacks);
+ *MockNghttp2Callbacks::GetCallbacks(), &callbacks);
testing::InSequence seq;