[socket] Add TcpClientLink::connecting() (#20722)

This commit is contained in:
Petar Petrov
2026-10-13 19:19:17 -10:00
committed by GitHub
parent 1338902ac5
commit 1146b77836
2 changed files with 16 additions and 0 deletions
@@ -61,6 +61,8 @@ class TcpClientLink {
void close();
bool connected() const { return this->connected_; }
/// A connect attempt is in flight.
bool connecting() const { return this->sock_ != nullptr && !this->connected_; }
bool ready() const { return this->sock_ != nullptr && this->sock_->ready(); }
/// Shared retry clock, also usable for a listen socket.
void note_attempt() { this->last_attempt_ms_ = App.get_loop_component_start_time(); }
@@ -102,6 +102,19 @@ TEST_F(TcpClientLinkClock, PendingConnectTimesOutIntoBackoff) {
EXPECT_TRUE(this->link_.in_backoff());
}
TEST_F(TcpClientLinkClock, ConnectingUntilThePendingAttemptEnds) {
this->link_.begin("link_test");
EXPECT_FALSE(this->link_.connecting());
this->set_pending_socket();
this->link_.note_attempt();
this->link_.poll();
EXPECT_TRUE(this->link_.connecting());
set_loop_time(1000 + 10000);
this->link_.poll();
EXPECT_FALSE(this->link_.connecting());
EXPECT_FALSE(this->link_.connected());
}
TEST_F(TcpClientLinkClock, ConnectTimeoutFollowsALongerInterval) {
this->link_.set_reconnect_interval(20000);
this->link_.begin("link_test");
@@ -177,6 +190,7 @@ TEST_F(TcpClientLinkClock, BackoffSpansAMillisWrap) {
TEST(TcpClientLink, AdoptedSocketFlushesQueuedBytes) {
LinkPeer p;
ASSERT_TRUE(p.link_.connected());
EXPECT_FALSE(p.link_.connecting());
EXPECT_EQ(p.link_.queue(reinterpret_cast<const uint8_t *>("ping"), 4), 4u);
EXPECT_TRUE(p.link_.flush_tx());
char buf[8];