diff --git a/quic/api/QuicTransportBase.cpp b/quic/api/QuicTransportBase.cpp index 25e856806..7ea78543c 100644 --- a/quic/api/QuicTransportBase.cpp +++ b/quic/api/QuicTransportBase.cpp @@ -57,40 +57,6 @@ void QuicTransportBase::setPacingTimer( } } -const std::shared_ptr QuicTransportBase::getQLogger() const { - return conn_->qLogger; -} - -void QuicTransportBase::setQLogger(std::shared_ptr qLogger) { - // setQLogger can be called multiple times for the same connection and with - // the same qLogger we track the number of times it gets set and the number - // of times it gets reset, and only stop qlog collection when the number of - // resets equals the number of times the logger was set - if (!conn_->qLogger) { - CHECK_EQ(qlogRefcnt_, 0); - } else { - CHECK_GT(qlogRefcnt_, 0); - } - - if (qLogger) { - conn_->qLogger = std::move(qLogger); - conn_->qLogger->setDcid(conn_->clientChosenDestConnectionId); - if (conn_->nodeType == QuicNodeType::Server) { - conn_->qLogger->setScid(conn_->serverConnectionId); - } else { - conn_->qLogger->setScid(conn_->clientConnectionId); - } - qlogRefcnt_++; - } else { - if (conn_->qLogger) { - qlogRefcnt_--; - if (qlogRefcnt_ == 0) { - conn_->qLogger = nullptr; - } - } - } -} - Optional QuicTransportBase::getClientConnectionId() const { return conn_->clientConnectionId; } diff --git a/quic/api/QuicTransportBase.h b/quic/api/QuicTransportBase.h index d470962f0..1e5a15b85 100644 --- a/quic/api/QuicTransportBase.h +++ b/quic/api/QuicTransportBase.h @@ -51,8 +51,6 @@ class QuicTransportBase : public QuicSocket, Optional getClientChosenDestConnectionId() const override; - const std::shared_ptr getQLogger() const; - // QuicSocket interface bool replaySafe() const override; @@ -169,8 +167,6 @@ class QuicTransportBase : public QuicSocket, ApplicationErrorCode error, folly::StringPiece errorMsg) override; - virtual void setQLogger(std::shared_ptr qLogger); - void setLoopDetectorCallback(std::shared_ptr callback) { conn_->loopDetectorCallback = std::move(callback); } @@ -255,8 +251,6 @@ class QuicTransportBase : public QuicSocket, bool handshakeDoneNotified_{false}; - uint64_t qlogRefcnt_{0}; - private: /** * Helper to check if using custom retransmission profiles is feasible. diff --git a/quic/api/QuicTransportBaseLite.cpp b/quic/api/QuicTransportBaseLite.cpp index 9e7809f23..19655b8f8 100644 --- a/quic/api/QuicTransportBaseLite.cpp +++ b/quic/api/QuicTransportBaseLite.cpp @@ -753,6 +753,40 @@ QuicTransportBaseLite::read(StreamId id, size_t maxLen) { } } +void QuicTransportBaseLite::setQLogger(std::shared_ptr qLogger) { + // setQLogger can be called multiple times for the same connection and with + // the same qLogger we track the number of times it gets set and the number + // of times it gets reset, and only stop qlog collection when the number of + // resets equals the number of times the logger was set + if (!conn_->qLogger) { + CHECK_EQ(qlogRefcnt_, 0); + } else { + CHECK_GT(qlogRefcnt_, 0); + } + + if (qLogger) { + conn_->qLogger = std::move(qLogger); + conn_->qLogger->setDcid(conn_->clientChosenDestConnectionId); + if (conn_->nodeType == QuicNodeType::Server) { + conn_->qLogger->setScid(conn_->serverConnectionId); + } else { + conn_->qLogger->setScid(conn_->clientConnectionId); + } + qlogRefcnt_++; + } else { + if (conn_->qLogger) { + qlogRefcnt_--; + if (qlogRefcnt_ == 0) { + conn_->qLogger = nullptr; + } + } + } +} + +const std::shared_ptr QuicTransportBaseLite::getQLogger() const { + return conn_->qLogger; +} + folly::Expected QuicTransportBaseLite::setStreamPriority(StreamId id, Priority priority) { if (closeState_ != CloseState::OPEN) { diff --git a/quic/api/QuicTransportBaseLite.h b/quic/api/QuicTransportBaseLite.h index f7701595c..784048a7f 100644 --- a/quic/api/QuicTransportBaseLite.h +++ b/quic/api/QuicTransportBaseLite.h @@ -170,6 +170,10 @@ class QuicTransportBaseLite : virtual public QuicSocketLite, StreamId id, size_t maxLen) override; + virtual void setQLogger(std::shared_ptr qLogger); + + [[nodiscard]] const std::shared_ptr getQLogger() const; + void setReceiveWindow(StreamId, size_t /*recvWindowSize*/) override {} void setSendBuffer(StreamId, size_t /*maxUnacked*/, size_t /*maxUnsent*/) @@ -922,6 +926,8 @@ class QuicTransportBaseLite : virtual public QuicSocketLite, * additionalCmsgs callback */ void updatePacketProcessorsPrewriteRequests(); + + uint64_t qlogRefcnt_{0}; }; std::ostream& operator<<(std::ostream& os, const QuicTransportBaseLite& qt);