diff --git a/quic/api/QuicSocket.h b/quic/api/QuicSocket.h index d348b69c6..b72de0bbc 100644 --- a/quic/api/QuicSocket.h +++ b/quic/api/QuicSocket.h @@ -139,15 +139,6 @@ class QuicSocket { onKnob(uint64_t /*knobSpace*/, uint64_t /*knobId*/, Buf /*knobBlob*/) {} }; - /** - * Callback for connection level events. This callback must be set at all - * times. - * This callback will be phased out with the two separate callbacks above to - * replace it. - */ - class ConnectionCallback : public ConnectionSetupCallback, - public ConnectionCallbackNew {}; - /** * Information about the transport, similar to what TCP has. */ @@ -216,11 +207,6 @@ class QuicSocket { uint64_t numPacketsTxWithNewData{0}; }; - /** - * Sets connection callback, must be set BEFORE using the socket. - */ - virtual void setConnectionCallback(ConnectionCallback* callback) = 0; - /** * Sets connection setup callback. This callback must be set before using the * socket. diff --git a/quic/api/QuicTransportBase.cpp b/quic/api/QuicTransportBase.cpp index 614094ab9..255ddfb06 100644 --- a/quic/api/QuicTransportBase.cpp +++ b/quic/api/QuicTransportBase.cpp @@ -28,8 +28,7 @@ namespace quic { QuicTransportBase::QuicTransportBase( folly::EventBase* evb, - std::unique_ptr socket, - bool useSplitConnectionCallbacks) + std::unique_ptr socket) : evb_(evb), socket_(std::move(socket)), lossTimeout_(this), @@ -52,8 +51,7 @@ QuicTransportBase::QuicTransportBase( writeLooper_(new FunctionLooper( evb, [this](bool fromTimer) { pacedWriteDataToSocket(fromTimer); }, - LooperType::WriteLooper)), - useSplitConnectionCallbacks_(useSplitConnectionCallbacks) { + LooperType::WriteLooper)) { writeLooper_->setPacingFunction([this]() -> auto { if (isConnectionPaced(*conn_)) { return conn_->pacer->getTimeUntilNextWrite(); @@ -398,11 +396,7 @@ void QuicTransportBase::closeImpl( // connCallback_ could be null if start() was never invoked and the // transport was destroyed or if the app initiated close. if (connCallback_) { - if (!useSplitConnectionCallbacks_) { - processConnectionEndError(cancelCode); - } else { - processConnectionEndErrorSplitCallbacks(cancelCode); - } + processConnectionEndErrorSplitCallbacks(cancelCode); } // can't invoke connection callbacks any more. @@ -2706,13 +2700,6 @@ void QuicTransportBase::setSupportedVersions( conn_->supportedVersions = versions; } -void QuicTransportBase::setConnectionCallback(ConnectionCallback* callback) { - if (!connCallback_) { - connCallback_ = CallbackDispatcher::make(); - } - connCallback_->setConnectionCallback(CHECK_NOTNULL(callback)); -} - void QuicTransportBase::setConnectionSetupCallback( ConnectionSetupCallback* callback) { if (!connCallback_) { diff --git a/quic/api/QuicTransportBase.h b/quic/api/QuicTransportBase.h index 702f140dd..4f32825fc 100644 --- a/quic/api/QuicTransportBase.h +++ b/quic/api/QuicTransportBase.h @@ -38,8 +38,7 @@ class QuicTransportBase : public QuicSocket, QuicStreamPrioritiesObserver { public: QuicTransportBase( folly::EventBase* evb, - std::unique_ptr socket, - bool useSplitConnectionCallbacks = false); + std::unique_ptr socket); ~QuicTransportBase() override; @@ -225,8 +224,6 @@ class QuicTransportBase : public QuicSocket, QuicStreamPrioritiesObserver { virtual void setSupportedVersions(const std::vector& versions); - void setConnectionCallback(ConnectionCallback* callback) final; - void setConnectionSetupCallback(ConnectionSetupCallback* callback) final; void setConnectionCallbackNew(ConnectionCallbackNew* callback) final; @@ -862,7 +859,8 @@ class QuicTransportBase : public QuicSocket, QuicStreamPrioritiesObserver { const std::pair& cancelCode); class CallbackDispatcher : public folly::DelayedDestruction, - public ConnectionCallback { + public ConnectionSetupCallback, + public ConnectionCallbackNew { public: using UniquePtr = std::unique_ptr; @@ -940,10 +938,6 @@ class QuicTransportBase : public QuicSocket, QuicStreamPrioritiesObserver { } // Callback setters. - void setConnectionCallback(ConnectionCallback* callback) { - connSetupCallback_ = callback; - connStreamsCallback_ = callback; - } void setConnectionSetupCallback(ConnectionSetupCallback* callback) { connSetupCallback_ = callback; } @@ -1028,11 +1022,6 @@ class QuicTransportBase : public QuicSocket, QuicStreamPrioritiesObserver { uint64_t qlogRefcnt_{0}; - // Temp flag controlling which connection callbacks to use - old single - // callback object or two new split callback objects. Will be removed out once - // mvfst is switched to the new split callbacks eventually. - bool useSplitConnectionCallbacks_{false}; - // Priority level threshold for background streams // If all streams have equal or lower priority to the threshold // (value >= threshold), the connection is considered to be in backround mode. diff --git a/quic/api/test/MockQuicSocket.h b/quic/api/test/MockQuicSocket.h index 2f565b361..901084a06 100644 --- a/quic/api/test/MockQuicSocket.h +++ b/quic/api/test/MockQuicSocket.h @@ -112,7 +112,6 @@ class MockQuicSocket : public QuicSocket { StreamId, ReadCallback*, folly::Optional err)); - MOCK_METHOD1(setConnectionCallback, void(ConnectionCallback*)); MOCK_METHOD1(setConnectionSetupCallback, void(ConnectionSetupCallback*)); MOCK_METHOD1(setConnectionCallbackNew, void(ConnectionCallbackNew*)); void setEarlyDataAppParamsFunctions( diff --git a/quic/api/test/QuicTransportBaseTest.cpp b/quic/api/test/QuicTransportBaseTest.cpp index 0d6ce091d..2c107e501 100644 --- a/quic/api/test/QuicTransportBaseTest.cpp +++ b/quic/api/test/QuicTransportBaseTest.cpp @@ -553,9 +553,8 @@ TEST_F(QuicTransportImplTest, AckTimeoutExpiredWillResetTimeoutFlag) { } TEST_F(QuicTransportImplTest, IdleTimeoutExpiredDestroysTransport) { - EXPECT_CALL(connCallback, onConnectionEnd()).WillOnce(Invoke([&]() { - transport = nullptr; - })); + EXPECT_CALL(connSetupCallback, onConnectionSetupError(_)) + .WillOnce(Invoke([&](auto) { transport = nullptr; })); transport->invokeIdleTimeout(); } @@ -1171,8 +1170,8 @@ TEST_F(QuicTransportImplTest, onNewBidirectionalStreamSetReadCallback) { TEST_F(QuicTransportImplTest, OnInvalidServerStream) { EXPECT_CALL( - connCallback, - onConnectionError(IsError(TransportErrorCode::STREAM_STATE_ERROR))); + connSetupCallback, + onConnectionSetupError(IsError(TransportErrorCode::STREAM_STATE_ERROR))); auto readData = folly::IOBuf::copyBuffer("actual stream data"); StreamId stream1 = 29; transport->addDataToStream(stream1, StreamBuffer(readData->clone(), 0, true)); @@ -1412,8 +1411,8 @@ TEST_F(QuicTransportImplTest, ConnectionErrorUnhandledException) { transport->transportConn->oneRttWriteCipher = test::createNoOpAead(); auto stream = transport->createBidirectionalStream().value(); EXPECT_CALL( - connCallback, - onConnectionError(std::make_pair( + connSetupCallback, + onConnectionSetupError(std::make_pair( QuicErrorCode(TransportErrorCode::INTERNAL_ERROR), std::string("Well there's your problem")))); EXPECT_CALL(*socketPtr, write(_, _)).WillOnce(Invoke([](auto&, auto&) { @@ -2844,9 +2843,8 @@ TEST_F(QuicTransportImplTest, ExceptionInWriteLooperDoesNotCrash) { transport->addDataToStream( stream, StreamBuffer(IOBuf::copyBuffer("hello"), 0, false)); EXPECT_CALL(*socketPtr, write(_, _)).WillOnce(SetErrnoAndReturn(EBADF, -1)); - EXPECT_CALL(connCallback, onConnectionError(_)).WillOnce(Invoke([&](auto) { - transport.reset(); - })); + EXPECT_CALL(connSetupCallback, onConnectionSetupError(_)) + .WillOnce(Invoke([&](auto) { transport.reset(); })); transport->writeLooper()->runLoopCallback(); } diff --git a/quic/client/QuicClientAsyncTransport.cpp b/quic/client/QuicClientAsyncTransport.cpp index e2c5588c4..f1d2f4495 100644 --- a/quic/client/QuicClientAsyncTransport.cpp +++ b/quic/client/QuicClientAsyncTransport.cpp @@ -15,7 +15,7 @@ namespace quic { QuicClientAsyncTransport::QuicClientAsyncTransport( const std::shared_ptr& clientSock) { setSocket(clientSock); - clientSock->start(this); + clientSock->start(this, this); } void QuicClientAsyncTransport::onNewBidirectionalStream( diff --git a/quic/client/QuicClientAsyncTransport.h b/quic/client/QuicClientAsyncTransport.h index 1476cf220..5e80c920f 100644 --- a/quic/client/QuicClientAsyncTransport.h +++ b/quic/client/QuicClientAsyncTransport.h @@ -17,7 +17,8 @@ namespace quic { * for experiments with QUIC in code using folly::AsyncSockets. */ class QuicClientAsyncTransport : public QuicStreamAsyncTransport, - public QuicSocket::ConnectionCallback { + public QuicSocket::ConnectionSetupCallback, + public QuicSocket::ConnectionCallbackNew { public: using UniquePtr = std::unique_ptr< QuicClientAsyncTransport, diff --git a/quic/client/QuicClientTransport.cpp b/quic/client/QuicClientTransport.cpp index f4dfe5433..588020569 100644 --- a/quic/client/QuicClientTransport.cpp +++ b/quic/client/QuicClientTransport.cpp @@ -38,14 +38,12 @@ QuicClientTransport::QuicClientTransport( std::unique_ptr socket, std::shared_ptr handshakeFactory, size_t connectionIdSize, - PacketNum startingPacketNum, - bool useSplitConnectionCallbacks) + PacketNum startingPacketNum) : QuicClientTransport( evb, std::move(socket), std::move(handshakeFactory), - connectionIdSize, - useSplitConnectionCallbacks) { + connectionIdSize) { conn_->ackStates = AckStates(startingPacketNum); } @@ -53,9 +51,8 @@ QuicClientTransport::QuicClientTransport( folly::EventBase* evb, std::unique_ptr socket, std::shared_ptr handshakeFactory, - size_t connectionIdSize, - bool useSplitConnectionCallbacks) - : QuicTransportBase(evb, std::move(socket), useSplitConnectionCallbacks), + size_t connectionIdSize) + : QuicTransportBase(evb, std::move(socket)), happyEyeballsConnAttemptDelayTimeout_(this) { DCHECK(handshakeFactory); auto tempConn = @@ -1494,20 +1491,9 @@ void QuicClientTransport:: runOnEvbAsync([&](auto) { markZeroRttPacketsLost(*conn_, markPacketLoss); }); } -void QuicClientTransport::start(ConnectionCallback* cb) { - startBase(cb, nullptr, nullptr); -} - void QuicClientTransport::start( ConnectionSetupCallback* connSetupCb, ConnectionCallbackNew* connCb) { - startBase(nullptr, connSetupCb, connCb); -} - -void QuicClientTransport::startBase( - ConnectionCallback* cb, - ConnectionSetupCallback* connSetupCb, - ConnectionCallbackNew* connCb) { if (happyEyeballsEnabled_) { // TODO Supply v4 delay amount from somewhere when we want to tune this startHappyEyeballs( @@ -1528,12 +1514,10 @@ void QuicClientTransport::startBase( if (conn_->qLogger) { conn_->qLogger->addTransportStateUpdate(kStart); } - if (cb) { - setConnectionCallback(cb); - } else { - setConnectionSetupCallback(connSetupCb); - setConnectionCallbackNew(connCb); - } + + setConnectionSetupCallback(connSetupCb); + setConnectionCallbackNew(connCb); + clientConn_->pendingOneRttData.reserve( conn_->transportSettings.maxPacketsToBuffer); try { diff --git a/quic/client/QuicClientTransport.h b/quic/client/QuicClientTransport.h index 3cf252429..a8d8439d3 100644 --- a/quic/client/QuicClientTransport.h +++ b/quic/client/QuicClientTransport.h @@ -31,8 +31,7 @@ class QuicClientTransport folly::EventBase* evb, std::unique_ptr socket, std::shared_ptr handshakeFactory, - size_t connectionIdSize = 0, - bool useSplitConnectionCallbacks = false); + size_t connectionIdSize = 0); // Testing only API: QuicClientTransport( @@ -40,8 +39,7 @@ class QuicClientTransport std::unique_ptr socket, std::shared_ptr handshakeFactory, size_t connectionIdSize, - PacketNum startingPacketNum, - bool useSplitConnectionCallbacks = false); + PacketNum startingPacketNum); ~QuicClientTransport() override; @@ -60,14 +58,9 @@ class QuicClientTransport folly::EventBase* evb, std::unique_ptr sock, std::shared_ptr handshakeFactory, - size_t connectionIdSize = 0, - bool useSplitConnectionCallbacks = false) { + size_t connectionIdSize = 0) { auto client = std::make_shared( - evb, - std::move(sock), - std::move(handshakeFactory), - connectionIdSize, - useSplitConnectionCallbacks); + evb, std::move(sock), std::move(handshakeFactory), connectionIdSize); client->setSelfOwning(); return client; } @@ -95,11 +88,6 @@ class QuicClientTransport /** * Starts the connection. */ - virtual void start(ConnectionCallback* cb); - - /** - * Starts the connection with split callbacks. - */ virtual void start( ConnectionSetupCallback* connSetupCb, ConnectionCallbackNew* connCb); @@ -239,11 +227,6 @@ class QuicClientTransport */ void maybeSendTransportKnobs(); - void startBase( - ConnectionCallback* cb, - ConnectionSetupCallback* connSetupCb, - ConnectionCallbackNew* connStreamsCb); - bool replaySafeNotified_{false}; // Set it QuicClientTransport is in a self owning mode. This will be cleaned // up when the caller invokes a terminal call to the transport. diff --git a/quic/client/connector/QuicConnector.cpp b/quic/client/connector/QuicConnector.cpp index 8c7dd6f34..beeeed98d 100644 --- a/quic/client/connector/QuicConnector.cpp +++ b/quic/client/connector/QuicConnector.cpp @@ -64,8 +64,7 @@ void QuicConnector::connect( .setCertificateVerifier(std::move(verifier)) .setPskCache(std::move(quicPskCache)) .build(), - 0, /* connectionIdSize */ - true /* useSplitConnectionCallbacks */); + 0 /* connectionIdSize */); quicClient_->setHostname(sni.value_or(connectAddr.getAddressStr())); quicClient_->addNewPeerAddress(connectAddr); if (localAddr.hasValue()) { diff --git a/quic/fizz/client/test/QuicClientTransportTest.cpp b/quic/fizz/client/test/QuicClientTransportTest.cpp index 15608fb65..50175b414 100644 --- a/quic/fizz/client/test/QuicClientTransportTest.cpp +++ b/quic/fizz/client/test/QuicClientTransportTest.cpp @@ -385,7 +385,7 @@ TEST_P(QuicClientTransportIntegrationTest, TLSAlert) { auto qLogger = std::make_shared(VantagePoint::Client); client->getNonConstConn().qLogger = qLogger; - EXPECT_CALL(clientConnCallback, onConnectionError(_)) + EXPECT_CALL(clientConnSetupCallback, onConnectionSetupError(_)) .WillOnce(Invoke([&](const auto& errorCode) { LOG(ERROR) << "error: " << errorCode.second; const TransportErrorCode* transportError = @@ -411,7 +411,7 @@ TEST_P(QuicClientTransportIntegrationTest, BadServerTest) { auto tp = client->getTransportSettings(); tp.maxNumPTOs = 4; client->setTransportSettings(tp); - EXPECT_CALL(clientConnCallback, onConnectionError(_)) + EXPECT_CALL(clientConnSetupCallback, onConnectionSetupError(_)) .WillOnce(Invoke([&](const auto& errorCode) { LOG(ERROR) << "error: " << errorCode.second; const LocalErrorCode* localError = errorCode.first.asLocalErrorCode(); @@ -991,7 +991,7 @@ TEST_F(QuicClientTransportTest, CloseSocketOnWriteError) { client->start(&clientConnSetupCallback, &clientConnCallback); EXPECT_FALSE(client->isClosed()); - EXPECT_CALL(clientConnCallback, onConnectionError(_)); + EXPECT_CALL(clientConnSetupCallback, onConnectionSetupError(_)); eventbase_->loopOnce(); EXPECT_TRUE(client->isClosed()); } @@ -1053,7 +1053,8 @@ TEST_F(QuicClientTransportTest, onNetworkSwitchReplaceNoHandshake) { TEST_F(QuicClientTransportTest, SocketClosedDuringOnTransportReady) { class ConnectionCallbackThatWritesOnTransportReady - : public QuicSocket::ConnectionCallback { + : public QuicSocket::ConnectionSetupCallback, + public QuicSocket::ConnectionCallbackNew { public: explicit ConnectionCallbackThatWritesOnTransportReady( std::shared_ptr socket) @@ -1105,7 +1106,7 @@ TEST_F(QuicClientTransportTest, SocketClosedDuringOnTransportReady) { client->addNewPeerAddress(serverAddr); setupCryptoLayer(); - client->start(&callback); + client->start(&callback, &callback); setConnectionIds(); EXPECT_THROW(recvServerHello(), std::runtime_error); } @@ -1113,7 +1114,7 @@ TEST_F(QuicClientTransportTest, SocketClosedDuringOnTransportReady) { TEST_F(QuicClientTransportTest, NetworkUnreachableIsFatalToConn) { client->addNewPeerAddress(serverAddr); setupCryptoLayer(); - EXPECT_CALL(clientConnCallback, onConnectionError(_)); + EXPECT_CALL(clientConnSetupCallback, onConnectionSetupError(_)); EXPECT_CALL(*sock, write(_, _)).WillOnce(SetErrnoAndReturn(ENETUNREACH, -1)); client->start(&clientConnSetupCallback, &clientConnCallback); loopForWrites(); @@ -1915,7 +1916,7 @@ class QuicClientTransportHappyEyeballsTest .WillOnce(SetErrnoAndReturn(EBADF, -1)); EXPECT_CALL(*secondSock, write(secondAddress, _)) .WillOnce(SetErrnoAndReturn(EBADF, -1)); - EXPECT_CALL(clientConnCallback, onConnectionError(_)); + EXPECT_CALL(clientConnSetupCallback, onConnectionSetupError(_)); client->lossTimeout().cancelTimeout(); client->lossTimeout().timeoutExpired(); diff --git a/quic/samples/echo/EchoClient.h b/quic/samples/echo/EchoClient.h index e8bfce93f..cc5788117 100644 --- a/quic/samples/echo/EchoClient.h +++ b/quic/samples/echo/EchoClient.h @@ -26,7 +26,8 @@ namespace quic { namespace samples { -class EchoClient : public quic::QuicSocket::ConnectionCallback, +class EchoClient : public quic::QuicSocket::ConnectionSetupCallback, + public quic::QuicSocket::ConnectionCallbackNew, public quic::QuicSocket::ReadCallback, public quic::QuicSocket::WriteCallback { public: @@ -134,7 +135,7 @@ class EchoClient : public quic::QuicSocket::ConnectionCallback, std::make_shared("client")); LOG(INFO) << "EchoClient connecting to " << addr.describe(); - quicClient_->start(this); + quicClient_->start(this, this); }); startDone_.wait(); diff --git a/quic/server/QuicServerTransport.cpp b/quic/server/QuicServerTransport.cpp index 42a11b931..5b94e1a79 100644 --- a/quic/server/QuicServerTransport.cpp +++ b/quic/server/QuicServerTransport.cpp @@ -20,22 +20,6 @@ namespace quic { -QuicServerTransport::QuicServerTransport( - folly::EventBase* evb, - std::unique_ptr sock, - ConnectionCallback& cb, - std::shared_ptr ctx, - std::unique_ptr cryptoFactory, - PacketNum startingPacketNum) - : QuicServerTransport( - evb, - std::move(sock), - cb, - std::move(ctx), - std::move(cryptoFactory)) { - conn_->ackStates = AckStates(startingPacketNum); -} - QuicServerTransport::QuicServerTransport( folly::EventBase* evb, std::unique_ptr sock, @@ -54,31 +38,6 @@ QuicServerTransport::QuicServerTransport( conn_->ackStates = AckStates(startingPacketNum); } -QuicServerTransport::QuicServerTransport( - folly::EventBase* evb, - std::unique_ptr sock, - ConnectionCallback& cb, - std::shared_ptr ctx, - std::unique_ptr cryptoFactory) - : QuicTransportBase( - evb, - std::move(sock), - false /* useSplitConnectionCallbacks */), - ctx_(std::move(ctx)) { - auto tempConn = std::make_unique( - FizzServerQuicHandshakeContext::Builder() - .setFizzServerContext(ctx_) - .setCryptoFactory(std::move(cryptoFactory)) - .build()); - tempConn->serverAddr = socket_->address(); - serverConn_ = tempConn.get(); - conn_.reset(tempConn.release()); - conn_->observers = observers_; - - setConnectionCallback(&cb); - registerAllTransportKnobParamHandlers(); -} - QuicServerTransport::QuicServerTransport( folly::EventBase* evb, std::unique_ptr sock, @@ -86,11 +45,7 @@ QuicServerTransport::QuicServerTransport( ConnectionCallbackNew* connStreamsCb, std::shared_ptr ctx, std::unique_ptr cryptoFactory) - : QuicTransportBase( - evb, - std::move(sock), - true /* useSplitConnectionCallbacks */), - ctx_(std::move(ctx)) { + : QuicTransportBase(evb, std::move(sock)), ctx_(std::move(ctx)) { auto tempConn = std::make_unique( FizzServerQuicHandshakeContext::Builder() .setFizzServerContext(ctx_) @@ -118,14 +73,6 @@ QuicServerTransport::~QuicServerTransport() { false); } -QuicServerTransport::Ptr QuicServerTransport::make( - folly::EventBase* evb, - std::unique_ptr sock, - ConnectionCallback& cb, - std::shared_ptr ctx) { - return std::make_shared(evb, std::move(sock), cb, ctx); -} - QuicServerTransport::Ptr QuicServerTransport::make( folly::EventBase* evb, std::unique_ptr sock, diff --git a/quic/server/QuicServerTransport.h b/quic/server/QuicServerTransport.h index d57901211..aea083854 100644 --- a/quic/server/QuicServerTransport.h +++ b/quic/server/QuicServerTransport.h @@ -58,12 +58,6 @@ class QuicServerTransport virtual void onHandshakeUnfinished() noexcept = 0; }; - static QuicServerTransport::Ptr make( - folly::EventBase* evb, - std::unique_ptr sock, - ConnectionCallback& cb, - std::shared_ptr ctx); - static QuicServerTransport::Ptr make( folly::EventBase* evb, std::unique_ptr sock, @@ -71,13 +65,6 @@ class QuicServerTransport ConnectionCallbackNew* connStreamsCb, std::shared_ptr ctx); - QuicServerTransport( - folly::EventBase* evb, - std::unique_ptr sock, - ConnectionCallback& cb, - std::shared_ptr ctx, - std::unique_ptr cryptoFactory = nullptr); - QuicServerTransport( folly::EventBase* evb, std::unique_ptr sock, @@ -87,14 +74,6 @@ class QuicServerTransport std::unique_ptr cryptoFactory = nullptr); // Testing only API: - QuicServerTransport( - folly::EventBase* evb, - std::unique_ptr sock, - ConnectionCallback& cb, - std::shared_ptr ctx, - std::unique_ptr cryptoFactory, - PacketNum startingPacketNum); - QuicServerTransport( folly::EventBase* evb, std::unique_ptr sock, diff --git a/quic/server/async_tran/QuicAsyncTransportAcceptor.cpp b/quic/server/async_tran/QuicAsyncTransportAcceptor.cpp index fe95f51f4..fc487b8df 100644 --- a/quic/server/async_tran/QuicAsyncTransportAcceptor.cpp +++ b/quic/server/async_tran/QuicAsyncTransportAcceptor.cpp @@ -30,8 +30,8 @@ quic::QuicServerTransport::Ptr QuicAsyncTransportAcceptor::make( CHECK_EQ(evb, evb_); quic::QuicServerAsyncTransport::UniquePtr asyncWrapper( new quic::QuicServerAsyncTransport()); - auto transport = - quic::QuicServerTransport::make(evb, std::move(sock), *asyncWrapper, ctx); + auto transport = quic::QuicServerTransport::make( + evb, std::move(sock), asyncWrapper.get(), asyncWrapper.get(), ctx); asyncWrapper->setServerSocket(transport); wangle::ManagedConnection* managedConnection = connectionFactory_(std::move(asyncWrapper)); diff --git a/quic/server/async_tran/QuicServerAsyncTransport.h b/quic/server/async_tran/QuicServerAsyncTransport.h index 62b499956..a3949e9ea 100644 --- a/quic/server/async_tran/QuicServerAsyncTransport.h +++ b/quic/server/async_tran/QuicServerAsyncTransport.h @@ -12,7 +12,8 @@ namespace quic { class QuicServerAsyncTransport : public QuicStreamAsyncTransport, - public QuicSocket::ConnectionCallback { + public QuicSocket::ConnectionSetupCallback, + public QuicSocket::ConnectionCallbackNew { public: using UniquePtr = std::unique_ptr< QuicServerAsyncTransport, diff --git a/quic/tools/tperf/tperf.cpp b/quic/tools/tperf/tperf.cpp index c1af737cd..c348d6914 100644 --- a/quic/tools/tperf/tperf.cpp +++ b/quic/tools/tperf/tperf.cpp @@ -229,7 +229,8 @@ class TPerfAcceptObserver : public AcceptObserver { } // namespace -class ServerStreamHandler : public quic::QuicSocket::ConnectionCallback, +class ServerStreamHandler : public quic::QuicSocket::ConnectionSetupCallback, + public quic::QuicSocket::ConnectionCallbackNew, public quic::QuicSocket::ReadCallback, public quic::QuicSocket::WriteCallback { public: @@ -444,7 +445,7 @@ class TPerfServerTransportFactory : public quic::QuicServerTransportFactory { auto serverHandler = std::make_unique( evb, blockSize_, numStreams_, maxBytesPerStream_, *sock, dsrEnabled_); auto transport = quic::QuicServerTransport::make( - evb, std::move(sock), *serverHandler, ctx); + evb, std::move(sock), serverHandler.get(), serverHandler.get(), ctx); if (!FLAGS_server_qlogger_path.empty()) { auto qlogger = std::make_shared( VantagePoint::Server, FLAGS_server_qlogger_path); @@ -572,7 +573,8 @@ class TPerfServer { quic::QuicCcpThreadLauncher quicCcpThreadLauncher_; }; -class TPerfClient : public quic::QuicSocket::ConnectionCallback, +class TPerfClient : public quic::QuicSocket::ConnectionSetupCallback, + public quic::QuicSocket::ConnectionCallbackNew, public quic::QuicSocket::ReadCallback, public quic::QuicSocket::WriteCallback, public folly::HHWheelTimer::Callback { @@ -759,7 +761,7 @@ class TPerfClient : public quic::QuicSocket::ConnectionCallback, quicClient_->setTransportSettings(settings); LOG(INFO) << "TPerfClient connecting to " << addr.describe(); - quicClient_->start(this); + quicClient_->start(this, this); eventBase_.loopForever(); }