diff --git a/quic/api/QuicTransportBase.cpp b/quic/api/QuicTransportBase.cpp index aaec42558..1e7dd9cb3 100644 --- a/quic/api/QuicTransportBase.cpp +++ b/quic/api/QuicTransportBase.cpp @@ -2737,20 +2737,16 @@ QuicConnectionStats QuicTransportBase::getConnectionsStats() const { if (!conn_) { return connStats; } - connStats.peerAddress = conn_->peerAddress.describe(); + connStats.peerAddress = conn_->peerAddress; connStats.duration = Clock::now() - conn_->connectionTime; if (conn_->congestionController) { connStats.cwnd_bytes = conn_->congestionController->getCongestionWindow(); - connStats.congestionController = - congestionControlTypeToString(conn_->congestionController->type()) - .str(); + connStats.congestionController = conn_->congestionController->type(); conn_->congestionController->getStats(connStats.congestionControllerStats); } connStats.ptoCount = conn_->lossState.ptoCount; - connStats.srtt = std::chrono::duration_cast( - conn_->lossState.srtt); - connStats.rttvar = std::chrono::duration_cast( - conn_->lossState.rttvar); + connStats.srtt = conn_->lossState.srtt; + connStats.rttvar = conn_->lossState.rttvar; connStats.peerAckDelayExponent = conn_->peerAckDelayExponent; connStats.udpSendPacketLen = conn_->udpSendPacketLen; if (conn_->streamManager) { diff --git a/quic/api/test/QuicTransportBaseTest.cpp b/quic/api/test/QuicTransportBaseTest.cpp index 7cec54bb7..97e04f449 100644 --- a/quic/api/test/QuicTransportBaseTest.cpp +++ b/quic/api/test/QuicTransportBaseTest.cpp @@ -3659,7 +3659,7 @@ TEST_F( TEST_F(QuicTransportImplTest, GetConnectionStatsSmoke) { auto stats = transport->getConnectionsStats(); - EXPECT_EQ(stats.congestionController, kCongestionControlCubicStr); + EXPECT_EQ(stats.congestionController, CongestionControlType::Cubic); EXPECT_EQ(stats.clientConnectionId, "0a090807"); } diff --git a/quic/congestion_control/QuicCubic.cpp b/quic/congestion_control/QuicCubic.cpp index 2b65d2c98..cf106ab00 100644 --- a/quic/congestion_control/QuicCubic.cpp +++ b/quic/congestion_control/QuicCubic.cpp @@ -707,6 +707,7 @@ void Cubic::onPacketAckedInRecovery(const AckEvent& ack) { void Cubic::getStats(CongestionControllerStats& stats) const { stats.cubicStats.state = static_cast(state_); + stats.cubicStats.ssthresh = ssthresh_; } folly::StringPiece cubicStateToString(CubicStates state) { diff --git a/quic/server/QuicServerTransport.cpp b/quic/server/QuicServerTransport.cpp index 5d3edbb7f..cbb12833d 100644 --- a/quic/server/QuicServerTransport.cpp +++ b/quic/server/QuicServerTransport.cpp @@ -642,7 +642,7 @@ void QuicServerTransport::registerAllTransportKnobParamHandlers() { QuicConnectionStats QuicServerTransport::getConnectionsStats() const { QuicConnectionStats connStats = QuicTransportBase::getConnectionsStats(); if (serverConn_) { - connStats.localAddress = serverConn_->serverAddr.describe(); + connStats.localAddress = serverConn_->serverAddr; } return connStats; } diff --git a/quic/state/QuicConnectionStats.h b/quic/state/QuicConnectionStats.h index 3f43f460a..0c2ede363 100644 --- a/quic/state/QuicConnectionStats.h +++ b/quic/state/QuicConnectionStats.h @@ -8,9 +8,12 @@ #pragma once +#include #include #include +#include + using namespace std::chrono_literals; namespace quic { @@ -26,6 +29,7 @@ struct CopaStats { struct CubicStats { uint8_t state; + uint64_t ssthresh; }; union CongestionControllerStats { @@ -37,15 +41,15 @@ union CongestionControllerStats { struct QuicConnectionStats { uint8_t workerID{0}; uint32_t numConnIDs{0}; - std::string localAddress; - std::string peerAddress; + folly::SocketAddress localAddress; + folly::SocketAddress peerAddress; std::chrono::duration duration{0}; uint64_t cwnd_bytes{0}; - std::string congestionController; + CongestionControlType congestionController; CongestionControllerStats congestionControllerStats; uint32_t ptoCount{0}; - std::chrono::duration srtt{0ms}; - std::chrono::duration rttvar{0ms}; + std::chrono::microseconds srtt{0us}; + std::chrono::microseconds rttvar{0us}; uint64_t peerAckDelayExponent{0}; uint64_t udpSendPacketLen{0}; uint64_t numStreams{0};