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;