mirror of
https://github.com/esphome/esphome.git
synced 2026-10-14 10:12:52 +00:00
[socket] Add TcpClientLink::connecting() (#20722)
This commit is contained in:
@@ -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];
|
||||
|
||||
Reference in New Issue
Block a user