ESPHome
2026.11.0-dev
Loading...
Searching...
No Matches
esphome
components
socket
tcp_listener.h
Go to the documentation of this file.
1
#pragma once
2
3
#include "
headers.h
"
4
5
#if defined(USE_SOCKET_IMPL_LWIP_TCP) || defined(USE_SOCKET_IMPL_LWIP_SOCKETS) || defined(USE_SOCKET_IMPL_BSD_SOCKETS)
6
7
#ifdef USE_SOCKET_IPV4_ALLOW
8
#include "
ipv4_allow.h
"
9
#endif
10
#include "
socket.h
"
11
#include "
tcp_client_link.h
"
12
13
#include <cstdint>
14
#include <memory>
15
16
namespace
esphome::socket
{
17
21
class
TcpListener
{
22
public
:
23
#ifdef USE_SOCKET_IPV4_ALLOW
24
void
set_allow
(
const
Ipv4AllowEntry
*entries,
size_t
count
) { this->
allow_
.
set
(entries,
count
); }
25
#endif
26
28
void
begin
(
const
char
*tag) { this->
tag_
= tag; }
31
void
poll
(
TcpClientLink
&link,
bool
may_accept) {
32
if
(this->
listen_
==
nullptr
) {
33
if
(!link.
in_backoff
()) {
34
this->
try_listen_
(link);
35
}
36
return
;
37
}
38
if
(may_accept && !link.
connected
() && this->listen_->ready()) {
39
this->
accept_
(link);
40
}
41
}
42
void
close
() { this->
listen_
.reset(); }
44
void
dump_config
()
const
;
45
46
protected
:
47
void
try_listen_
(
TcpClientLink
&link);
48
void
accept_
(
TcpClientLink
&link);
49
50
std::unique_ptr<ListenSocket>
listen_
;
51
const
char
*
tag_
{
nullptr
};
52
#ifdef USE_SOCKET_IPV4_ALLOW
53
uint32_t
last_reject_log_ms_
{0};
54
Ipv4Allow
allow_
;
55
#endif
56
};
57
58
}
// namespace esphome::socket
59
60
#endif
esphome::socket::Ipv4Allow
IPv4 peers that may connect. An empty list allows every peer.
Definition
ipv4_allow.h:20
esphome::socket::Ipv4Allow::set
void set(const Ipv4AllowEntry *entries, size_t count)
Definition
ipv4_allow.h:22
esphome::socket::TcpClientLink
A reconnecting TCP stream driven from loop().
Definition
tcp_client_link.h:22
esphome::socket::TcpClientLink::connected
bool connected() const
Definition
tcp_client_link.h:63
esphome::socket::TcpClientLink::in_backoff
bool in_backoff() const
Definition
tcp_client_link.h:69
esphome::socket::TcpListener
The server side of a bridged TCP link: owns the listen socket and the allow list, accepts one peer at...
Definition
tcp_listener.h:21
esphome::socket::TcpListener::poll
void poll(TcpClientLink &link, bool may_accept)
Server state machine; call every loop.
Definition
tcp_listener.h:31
esphome::socket::TcpListener::begin
void begin(const char *tag)
Call from setup(); tag names the log lines.
Definition
tcp_listener.h:28
esphome::socket::TcpListener::tag_
const char * tag_
Definition
tcp_listener.h:51
esphome::socket::TcpListener::last_reject_log_ms_
uint32_t last_reject_log_ms_
Definition
tcp_listener.h:53
esphome::socket::TcpListener::allow_
Ipv4Allow allow_
Definition
tcp_listener.h:54
esphome::socket::TcpListener::set_allow
void set_allow(const Ipv4AllowEntry *entries, size_t count)
Definition
tcp_listener.h:24
esphome::socket::TcpListener::dump_config
void dump_config() const
One config line per allowed network.
Definition
tcp_listener.cpp:76
esphome::socket::TcpListener::listen_
std::unique_ptr< ListenSocket > listen_
Definition
tcp_listener.h:50
esphome::socket::TcpListener::close
void close()
Definition
tcp_listener.h:42
esphome::socket::TcpListener::try_listen_
void try_listen_(TcpClientLink &link)
Definition
tcp_listener.cpp:19
esphome::socket::TcpListener::accept_
void accept_(TcpClientLink &link)
Definition
tcp_listener.cpp:43
count
unsigned count
Definition
gif.cpp:51
headers.h
ipv4_allow.h
esphome::socket
Definition
bsd_sockets_impl.cpp:13
uint32_t
static void uint32_t
Definition
crash_handler.cpp:153
socket.h
esphome::socket::Ipv4AllowEntry
One allowed IPv4 network, network byte order, host bits cleared.
Definition
ipv4_allow.h:14
tcp_client_link.h
Generated by
1.12.0