join 1.0
lightweight network framework library
Loading...
Searching...
No Matches
Probe Class Reference

Reads the interface like the DHCP transport does, without being attached to the reactor. More...

Inheritance diagram for Probe:
Collaboration diagram for Probe:

Public Member Functions

 Probe (const std::string &interface)
 create the Probe instance.
 
uint32_t next ()
 wait for the next message that passes the transport checks, skipping the frames that do not.
 
- Public Member Functions inherited from join::BasicDhcp< Protocol >
 BasicDhcp ()=delete
 create the BasicDhcp instance.
 
 BasicDhcp (const std::string &interface, Reactor &reactor=ReactorThread::reactor())
 create the instance bound to the given interface.
 
 BasicDhcp (const BasicDhcp &other)=delete
 create instance by copy.
 
BasicDhcp & operator= (const BasicDhcp &other)=delete
 assign instance by copy.
 
 BasicDhcp (BasicDhcp &&other)=delete
 create instance by move.
 
BasicDhcp & operator= (BasicDhcp &&other)=delete
 assign instance by move.
 
virtual ~BasicDhcp ()=default
 destroy the instance.
 
const std::string & interface () const noexcept
 get the name of the interface the instance is bound to.
 
const MacAddress & hardware () const noexcept
 get the hardware address of the interface the instance is bound to.
 
- Public Member Functions inherited from join::EventHandler
 EventHandler ()=default
 create instance.
 
 EventHandler (const EventHandler &other)=default
 copy constructor.
 
EventHandler & operator= (const EventHandler &other)=default
 copy assignment operator.
 
 EventHandler (EventHandler &&other)=default
 move constructor.
 
EventHandler & operator= (EventHandler &&other)=default
 move assignment operator.
 
virtual ~EventHandler ()=default
 destroy instance.
 

Additional Inherited Members

- Public Types inherited from join::BasicDhcp< Protocol >
using Socket = typename Protocol::Socket
 
- Protected Member Functions inherited from join::BasicDhcp< Protocol >
struct __attribute__ ((packed, aligned(2))) Frame
 link, internet and transport headers a DHCP message is framed with.
 
struct __attribute__ ((packed, aligned(2))) Pseudo
 header the UDP checksum is computed over, RFC 768.
 
void attach ()
 register with the reactor, to be called by the final class once fully constructed.
 
void detach () noexcept
 unregister from the reactor, to be called by the final class before destruction starts.
 
int send (const char *data, size_t size, const MacAddress &to, const IpAddress &source, const IpAddress &destination) noexcept
 frame a message and write it on the wire.
 
ssize_t receive (char *data, size_t maxSize, MacAddress &from, MacAddress &to) noexcept
 read a message that passed the link, internet and transport checks.
 
- Protected Member Functions inherited from join::EventHandler
virtual void onEvent (int fd, uint32_t revents)
 method called when events are reported on handle.
 
virtual void onReadable (int fd)
 method called when data are ready to be read on handle.
 
virtual void onWriteable (int fd)
 method called when data are ready to be written on handle.
 
virtual void onClose (int fd)
 method called when handle was closed by the peer.
 
virtual void onError (int fd)
 method called when an error occurred on handle.
 
- Static Protected Member Functions inherited from join::BasicDhcp< Protocol >
static uint16_t udpChecksum (const Frame &frame, const char *payload, size_t size) noexcept
 compute the checksum of a UDP datagram, RFC 768.
 
- Protected Attributes inherited from join::BasicDhcp< Protocol >
Socket _socket
 underlying socket.
 
DhcpMessage _message
 DHCP message codec.
 
std::unique_ptr< char[]> _buffer
 receive buffer.
 
const std::string _interface
 interface name.
 
const MacAddress _hardware
 hardware address of the interface.
 
Reactor & _reactor
 event loop reactor.
 

Detailed Description

Reads the interface like the DHCP transport does, without being attached to the reactor.

Constructor & Destructor Documentation

◆ Probe()

Probe::Probe ( const std::string & interface)
inlineexplicit

create the Probe instance.

Parameters
interfaceinterface to bind to.

Member Function Documentation

◆ next()

uint32_t Probe::next ( )
inline

wait for the next message that passes the transport checks, skipping the frames that do not.

Returns
transaction identifier of the message, zero if none was read before the timeout.

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