esphome-api-client 0.5.0
Modern C++17 client for the ESPHome native API (plaintext + Noise)
Loading...
Searching...
No Matches
transport.hpp
Go to the documentation of this file.
1#pragma once
2
6
8
9#include <cstdint>
10#include <functional>
11#include <string>
12#include <system_error>
13
14namespace esphome::api {
15
19class Transport {
20public:
21 using ConnectHandler = std::function<void(std::error_code)>;
22 using ReadHandler = std::function<void(std::error_code, ByteView)>;
23 using WriteHandler = std::function<void(std::error_code)>;
24
25 virtual ~Transport() = default;
26
28 virtual void
29 async_connect(const std::string& host, std::uint16_t port, ConnectHandler handler) = 0;
30
33 virtual void start_read(ReadHandler on_read) = 0;
34
36 virtual void async_write(ByteBuffer data, WriteHandler handler) = 0;
37
39 virtual void close() = 0;
40
42 [[nodiscard]] virtual bool is_open() const = 0;
43};
44
45} // namespace esphome::api
Byte buffer / view aliases and protobuf base-128 varint codec.
Non-owning view over a contiguous run of bytes (a C++17 stand-in for std::span<const std::uint8_t>).
Definition bytes.hpp:17
Byte-stream transport: async connect, a continuous read pump and a serialized write queue.
Definition transport.hpp:19
virtual bool is_open() const =0
Whether the transport is currently open.
std::function< void(std::error_code)> ConnectHandler
Definition transport.hpp:21
virtual ~Transport()=default
virtual void async_connect(const std::string &host, std::uint16_t port, ConnectHandler handler)=0
Resolve and connect to host:port; handler fires once.
virtual void async_write(ByteBuffer data, WriteHandler handler)=0
Queue data for transmission (FIFO). handler fires on completion.
std::function< void(std::error_code)> WriteHandler
Definition transport.hpp:23
virtual void start_read(ReadHandler on_read)=0
Start the continuous read pump.
std::function< void(std::error_code, ByteView)> ReadHandler
Definition transport.hpp:22
virtual void close()=0
Close the transport.
Definition bytes.hpp:10
std::vector< std::uint8_t > ByteBuffer
Owning, growable byte buffer.
Definition bytes.hpp:13