6#include <asio/io_context.hpp>
75 void Send(
const std::vector<std::uint8_t>&
frame)
override;
80 void SetTimeout(std::chrono::milliseconds timeout)
override;
87 [[nodiscard]] std::vector<std::uint8_t>
Recv()
override;
102 std::unique_ptr<EthernetPacketBackend>
backend;
Abstraction for sending and receiving raw Ethernet frames.
Private packet-capture backend for complete Ethernet frames.
Platform-independent raw Ethernet transport using Asio.
AsioEthernetSocket & operator=(const AsioEthernetSocket &)=delete
AsioEthernetSocket(const AsioEthernetSocket &)=delete
AsioEthernetSocket(AsioEthernetSocket &&)=delete
AsioEthernetSocket & operator=(AsioEthernetSocket &&)=delete
void Send(const std::vector< std::uint8_t > &frame) override
Send one complete Ethernet frame.
asio::io_context & ioContext
Asio execution context supplied by the caller.
std::vector< std::uint8_t > Recv() override
Receive one complete Ethernet frame.
std::unique_ptr< EthernetPacketBackend > backend
Platform packet-access implementation.
void SetTimeout(std::chrono::milliseconds timeout) override
Set the receive timeout.
~AsioEthernetSocket() override
Destroy the Ethernet transport.
Shared fixture for EthernetPacketBackend tests.
Abstract interface for raw Ethernet frame transport.