ESPHome 2026.5.0-dev
Loading...
Searching...
No Matches
esphome::api::APIFrameHelper Class Referenceabstract

#include <api_frame_helper.h>

Inheritance diagram for esphome::api::APIFrameHelper:
esphome::api::APINoiseFrameHelper esphome::api::APIPlaintextFrameHelper

Public Member Functions

 APIFrameHelper ()=default
 
 APIFrameHelper (std::unique_ptr< socket::Socket > socket)
 
const char * get_client_name () const
 
const char * get_peername_to (std::span< char, socket::SOCKADDR_STR_LEN > buf) const
 
void set_client_name (const char *name, size_t len)
 
virtual ~APIFrameHelper ()=default
 
virtual APIError init ()=0
 
virtual APIError loop ()=0
 
virtual APIError read_packet (ReadPacketBuffer *buffer)=0
 
bool can_write_without_blocking ()
 
int getpeername (struct sockaddr *addr, socklen_t *addrlen)
 
APIError close ()
 
APIError shutdown (int how)
 
void set_nodelay_for_message (bool is_log_message)
 
virtual APIError write_protobuf_packet (uint8_t type, ProtoWriteBuffer buffer)=0
 
virtual APIError write_protobuf_messages (ProtoWriteBuffer buffer, std::span< const MessageInfo > messages)=0
 
uint8_t frame_header_padding () const
 
uint8_t frame_header_size (uint16_t payload_size, uint8_t message_type) const
 
uint8_t frame_footer_size () const
 
bool is_socket_ready () const
 
void release_buffers ()
 

Protected Types

enum class  State : uint8_t {
  INITIALIZE = 1 , CLIENT_HELLO = 2 , SERVER_HELLO = 3 , HANDSHAKE = 4 ,
  DATA = 5 , CLOSED = 6 , FAILED = 7 , EXPLICIT_REJECT = 8
}
 

Protected Member Functions

APIError drain_overflow_and_handle_errors_ ()
 
ssize_t ESPHOME_ALWAYS_INLINE write_iov_to_socket_ (const struct iovec *iov, int iovcnt)
 
APIError ESPHOME_ALWAYS_INLINE write_raw_fast_buf_ (const void *data, uint16_t len)
 
APIError write_raw_buf_ (const void *data, uint16_t len, ssize_t sent=WRITE_NOT_ATTEMPTED)
 
APIError write_raw_iov_ (const struct iovec *iov, int iovcnt, uint16_t total_write_len, ssize_t sent=WRITE_NOT_ATTEMPTED)
 
void log_packet_sending_ (const void *data, uint16_t len)
 
APIError ESPHOME_ALWAYS_INLINE check_data_state_ () const
 
void set_nodelay_raw_ (bool enable)
 
APIError init_common_ ()
 
APIError handle_socket_read_result_ (ssize_t received)
 

Protected Attributes

std::unique_ptr< socket::Socketsocket_
 
APIOverflowBuffer overflow_buf_
 
APIBuffer rx_buf_
 
char client_name_ [CLIENT_INFO_NAME_MAX_LEN] {}
 
uint16_t rx_buf_len_ = 0
 
State state_ {State::INITIALIZE}
 
uint8_t frame_header_padding_ {0}
 
uint8_t frame_footer_size_ {0}
 
uint8_t nodelay_counter_ {0}
 

Static Protected Attributes

static constexpr ssize_t WRITE_FAILED = -1
 
static constexpr ssize_t WRITE_NOT_ATTEMPTED = -2
 
static constexpr uint8_t LOG_NAGLE_COUNT = 2
 

Detailed Description

Definition at line 95 of file api_frame_helper.h.

Member Enumeration Documentation

◆ State

enum class esphome::api::APIFrameHelper::State : uint8_t
strongprotected
Enumerator
INITIALIZE 
CLIENT_HELLO 
SERVER_HELLO 
HANDSHAKE 
DATA 
CLOSED 
FAILED 
EXPLICIT_REJECT 

Definition at line 266 of file api_frame_helper.h.

Constructor & Destructor Documentation

◆ APIFrameHelper() [1/2]

esphome::api::APIFrameHelper::APIFrameHelper ( )
default

◆ APIFrameHelper() [2/2]

esphome::api::APIFrameHelper::APIFrameHelper ( std::unique_ptr< socket::Socket > socket)
inlineexplicit

Definition at line 98 of file api_frame_helper.h.

◆ ~APIFrameHelper()

virtual esphome::api::APIFrameHelper::~APIFrameHelper ( )
virtualdefault

Member Function Documentation

◆ can_write_without_blocking()

bool esphome::api::APIFrameHelper::can_write_without_blocking ( )
inline

Definition at line 115 of file api_frame_helper.h.

◆ check_data_state_()

APIError ESPHOME_ALWAYS_INLINE esphome::api::APIFrameHelper::check_data_state_ ( ) const
inlineprotected

Definition at line 280 of file api_frame_helper.h.

◆ close()

APIError esphome::api::APIFrameHelper::close ( )
inline

Definition at line 117 of file api_frame_helper.h.

◆ drain_overflow_and_handle_errors_()

APIError esphome::api::APIFrameHelper::drain_overflow_and_handle_errors_ ( )
protected

Definition at line 109 of file api_frame_helper.cpp.

◆ frame_footer_size()

uint8_t esphome::api::APIFrameHelper::frame_footer_size ( ) const
inline

Definition at line 197 of file api_frame_helper.h.

◆ frame_header_padding()

uint8_t esphome::api::APIFrameHelper::frame_header_padding ( ) const
inline

Definition at line 178 of file api_frame_helper.h.

◆ frame_header_size()

uint8_t esphome::api::APIFrameHelper::frame_header_size ( uint16_t payload_size,
uint8_t message_type ) const
inline

Definition at line 185 of file api_frame_helper.h.

◆ get_client_name()

const char * esphome::api::APIFrameHelper::get_client_name ( ) const
inline

Definition at line 101 of file api_frame_helper.h.

◆ get_peername_to()

const char * esphome::api::APIFrameHelper::get_peername_to ( std::span< char, socket::SOCKADDR_STR_LEN > buf) const

Definition at line 180 of file api_frame_helper.cpp.

◆ getpeername()

int esphome::api::APIFrameHelper::getpeername ( struct sockaddr * addr,
socklen_t * addrlen )
inline

Definition at line 116 of file api_frame_helper.h.

◆ handle_socket_read_result_()

APIError esphome::api::APIFrameHelper::handle_socket_read_result_ ( ssize_t received)
protected

Definition at line 211 of file api_frame_helper.cpp.

◆ init()

virtual APIError esphome::api::APIFrameHelper::init ( )
pure virtual

◆ init_common_()

APIError esphome::api::APIFrameHelper::init_common_ ( )
protected

Definition at line 189 of file api_frame_helper.cpp.

◆ is_socket_ready()

bool esphome::api::APIFrameHelper::is_socket_ready ( ) const
inline

Definition at line 202 of file api_frame_helper.h.

◆ log_packet_sending_()

void esphome::api::APIFrameHelper::log_packet_sending_ ( const void * data,
uint16_t len )
protected

Definition at line 104 of file api_frame_helper.cpp.

◆ loop()

virtual APIError esphome::api::APIFrameHelper::loop ( )
pure virtual

◆ read_packet()

virtual APIError esphome::api::APIFrameHelper::read_packet ( ReadPacketBuffer * buffer)
pure virtual

◆ release_buffers()

void esphome::api::APIFrameHelper::release_buffers ( )
inline

Definition at line 204 of file api_frame_helper.h.

◆ set_client_name()

void esphome::api::APIFrameHelper::set_client_name ( const char * name,
size_t len )
inline

Definition at line 106 of file api_frame_helper.h.

◆ set_nodelay_for_message()

void esphome::api::APIFrameHelper::set_nodelay_for_message ( bool is_log_message)
inline

Definition at line 153 of file api_frame_helper.h.

◆ set_nodelay_raw_()

void esphome::api::APIFrameHelper::set_nodelay_raw_ ( bool enable)
inlineprotected

Definition at line 313 of file api_frame_helper.h.

◆ shutdown()

APIError esphome::api::APIFrameHelper::shutdown ( int how)
inline

Definition at line 126 of file api_frame_helper.h.

◆ write_iov_to_socket_()

ssize_t ESPHOME_ALWAYS_INLINE esphome::api::APIFrameHelper::write_iov_to_socket_ ( const struct iovec * iov,
int iovcnt )
inlineprotected

Definition at line 225 of file api_frame_helper.h.

◆ write_protobuf_messages()

virtual APIError esphome::api::APIFrameHelper::write_protobuf_messages ( ProtoWriteBuffer buffer,
std::span< const MessageInfo > messages )
pure virtual

◆ write_protobuf_packet()

virtual APIError esphome::api::APIFrameHelper::write_protobuf_packet ( uint8_t type,
ProtoWriteBuffer buffer )
pure virtual

◆ write_raw_buf_()

APIError esphome::api::APIFrameHelper::write_raw_buf_ ( const void * data,
uint16_t len,
ssize_t sent = WRITE_NOT_ATTEMPTED )
protected

Definition at line 122 of file api_frame_helper.cpp.

◆ write_raw_fast_buf_()

APIError ESPHOME_ALWAYS_INLINE esphome::api::APIFrameHelper::write_raw_fast_buf_ ( const void * data,
uint16_t len )
inlineprotected

Definition at line 232 of file api_frame_helper.h.

◆ write_raw_iov_()

APIError esphome::api::APIFrameHelper::write_raw_iov_ ( const struct iovec * iov,
int iovcnt,
uint16_t total_write_len,
ssize_t sent = WRITE_NOT_ATTEMPTED )
protected

Definition at line 136 of file api_frame_helper.cpp.

Field Documentation

◆ client_name_

char esphome::api::APIFrameHelper::client_name_[CLIENT_INFO_NAME_MAX_LEN] {}
protected

Definition at line 293 of file api_frame_helper.h.

◆ frame_footer_size_

uint8_t esphome::api::APIFrameHelper::frame_footer_size_ {0}
protected

Definition at line 299 of file api_frame_helper.h.

◆ frame_header_padding_

uint8_t esphome::api::APIFrameHelper::frame_header_padding_ {0}
protected

Definition at line 298 of file api_frame_helper.h.

◆ LOG_NAGLE_COUNT

static constexpr uint8_t esphome::api::APIFrameHelper::LOG_NAGLE_COUNT = 2
staticconstexprprotected

Definition at line 306 of file api_frame_helper.h.

◆ nodelay_counter_

uint8_t esphome::api::APIFrameHelper::nodelay_counter_ {0}
protected

Definition at line 310 of file api_frame_helper.h.

◆ overflow_buf_

APIOverflowBuffer esphome::api::APIFrameHelper::overflow_buf_
protected

Definition at line 289 of file api_frame_helper.h.

◆ rx_buf_

APIBuffer esphome::api::APIFrameHelper::rx_buf_
protected

Definition at line 290 of file api_frame_helper.h.

◆ rx_buf_len_

uint16_t esphome::api::APIFrameHelper::rx_buf_len_ = 0
protected

Definition at line 296 of file api_frame_helper.h.

◆ socket_

std::unique_ptr<socket::Socket> esphome::api::APIFrameHelper::socket_
protected

Definition at line 256 of file api_frame_helper.h.

◆ state_

State esphome::api::APIFrameHelper::state_ {State::INITIALIZE}
protected

Definition at line 297 of file api_frame_helper.h.

◆ WRITE_FAILED

ssize_t esphome::api::APIFrameHelper::WRITE_FAILED = -1
staticconstexprprotected

Definition at line 221 of file api_frame_helper.h.

◆ WRITE_NOT_ATTEMPTED

ssize_t esphome::api::APIFrameHelper::WRITE_NOT_ATTEMPTED = -2
staticconstexprprotected

Definition at line 222 of file api_frame_helper.h.


The documentation for this class was generated from the following files: