|
qb
2.0.0.0
C++17 Actor Framework
|
Asynchronous UDP server implementation. More...
#include <server.h>


Public Member Functions | |
| server () noexcept | |
| Constructor. | |
| Public Member Functions inherited from qb::io::async::io< _Derived > | |
| io ()=default | |
| Default constructor. | |
| io (IProtocol *protocol) noexcept | |
| Constructor with an initial protocol instance. | |
| io (io const &)=delete | |
| Deleted copy constructor. | |
| ~io () noexcept | |
| Destructor. | |
| template<typename _Protocol, typename... _Args> | |
| _Protocol * | switch_protocol (_Args &&...args) |
| Switches to a new protocol for I/O processing, taking ownership. | |
| void | clear_protocols () |
| Clears all owned protocol instances. | |
| IProtocol * | protocol () |
| Gets a pointer to the current active protocol instance. | |
| void | start () noexcept |
| Starts bidirectional asynchronous I/O operations. | |
| void | ready_to_read () noexcept |
| Ensures the I/O watcher is listening for read events (EV_READ). | |
| void | ready_to_write () noexcept |
| Ensures the I/O watcher is listening for write events (EV_WRITE). | |
| void | close_after_deliver () const noexcept |
| Requests connection closure after all pending output data is delivered. | |
| template<typename... _Args> | |
| auto & | publish (_Args &&...args) noexcept |
| Publishes data to the output buffer and ensures write readiness. | |
| template<typename T> | |
| auto & | operator<< (T &&data) |
| Stream operator for publishing data. | |
| void | disconnect (int reason=1) |
| Initiates a graceful disconnection. | |
| Public Member Functions inherited from qb::io::transport::udp | |
| constexpr bool | is_secure () const noexcept |
| Indicates that this transport implementation is not secure. | |
| const udp::identity & | getSource () const noexcept |
| Get the source udp::identity (endpoint) of the last successfully received datagram. | |
| void | setDestination (udp::identity const &to) noexcept |
| Set the destination udp::identity for subsequent outgoing datagrams sent via out() or operator<<. | |
| auto & | out () |
| Get the output proxy (ProxyOut) for stream-like sending to the current destination. | |
| int | read () noexcept |
| Read a single datagram from the UDP socket. | |
| int | write () noexcept |
| Write the next complete datagram from the output buffer to its destination. | |
| char * | publish (char const *data, std::size_t size) noexcept |
| Publish (enqueue) data to be sent to the current default destination (_remote_dest). | |
| char * | publish_to (udp::identity const &to, char const *data, std::size_t size) noexcept |
| Publish (enqueue) data to be sent to a specific udp::identity destination. | |
| Public Member Functions inherited from qb::io::stream< io::udp::socket > | |
| output_buffer_type & | out () noexcept |
| Get the output buffer. | |
| std::size_t | pendingWrite () const noexcept |
| Get the number of bytes pending for writing. | |
| int | write (std::enable_if_t< has_method_write< io::udp::socket, int, const char *, std::size_t >::value, Available > *=nullptr) noexcept |
| Write data from the output buffer to the transport. | |
| char * | publish (char const *data, std::size_t size) noexcept |
| Add data to the output buffer for later writing. | |
| void | close () noexcept |
| Close the stream. | |
| Public Member Functions inherited from qb::io::istream< _IO_ > | |
| ~istream () noexcept | |
| Destructor. | |
| _IO_ & | transport () noexcept |
| Get the underlying transport object. | |
| const _IO_ & | transport () const noexcept |
| Get the underlying transport object (const version) | |
| input_buffer_type & | in () noexcept |
| Get the input buffer. | |
| std::size_t | pendingRead () const noexcept |
| Get the number of bytes available for reading. | |
| template<typename Available = void> | |
| int | read (std::enable_if_t< has_method_read< _IO_, int, char *, std::size_t >::value, Available > *=nullptr) noexcept |
| Read data from the transport into the input buffer. | |
| void | flush (std::size_t size) noexcept |
| Remove data from the front of the input buffer. | |
| void | eof () noexcept |
| Handle end-of-file condition. | |
| void | close () noexcept |
| Close the stream. | |
Static Public Attributes | |
| static constexpr const bool | has_server |
| Flag indicating server association (false for UDP servers) | |
| Static Public Attributes inherited from qb::io::async::io< _Derived > | |
| static constexpr const bool | has_server = false |
| Indicates this component is not inherently a server. | |
| Static Public Attributes inherited from qb::io::transport::udp | |
| static constexpr const bool | has_reset_on_pending_read = true |
| Indicates that this transport implementation resets its input buffer state when a read operation is pending (characteristic of datagram processing). | |
| Static Public Attributes inherited from qb::io::stream< io::udp::socket > | |
| static constexpr const bool | has_reset_on_pending_read |
| Flag indicating whether the implementation resets pending reads. | |
Additional Inherited Members | |
| Public Types inherited from qb::io::async::io< _Derived > | |
| typedef io< _Derived > | base_io_t |
| Base I/O type alias for CRTP. | |
| Public Types inherited from qb::io::stream< io::udp::socket > | |
| using | transport_io_type |
| Type of the underlying transport IO. | |
| using | output_buffer_type |
| Type of the output buffer. | |
| Public Types inherited from qb::io::istream< _IO_ > | |
| using | transport_io_type = _IO_ |
| Type of the underlying transport IO. | |
| using | input_buffer_type = qb::allocator::pipe<char> |
| Type of the input buffer. | |
| Public Attributes inherited from qb::io::transport::udp | |
| friend | ProxyOut |
| ProxyOut needs access to private members. | |
| Protected Member Functions inherited from qb::io::async::io< _Derived > | |
| void | dispose () |
| Disposes of resources and finalizes disconnection for the I/O component. | |
| Protected Member Functions inherited from qb::io::async::base< io< _Derived >, event::io > | |
| base () | |
| Constructor that registers the event watcher with the current listener. | |
| ~base () | |
| Destructor that unregisters the event watcher. | |
| Protected Attributes inherited from qb::io::async::base< io< _Derived >, event::io > | |
| event::io & | _async_event |
| Reference to the registered libev-based event watcher. | |
| Protected Attributes inherited from qb::io::stream< io::udp::socket > | |
| output_buffer_type | _out_buffer |
| Buffer for outgoing data. | |
| Protected Attributes inherited from qb::io::istream< _IO_ > | |
| _IO_ | _in |
| The underlying IO object. | |
| input_buffer_type | _in_buffer |
| Buffer for incoming data. | |
Asynchronous UDP server implementation.
Alternative UDP server implementation with session tracking.
This template class implements a simple asynchronous UDP server. It combines the io class for asynchronous operations with the UDP transport for handling UDP communications. If the derived class defines a Protocol type, it will be used for processing UDP messages.
| _Derived | The derived class type (CRTP pattern) |
This template class implements a more complex UDP server that tracks client sessions based on their endpoint identity.
| _Derived | The derived class type (CRTP pattern) |
| _Session | The session class type for handling client communications |
|
inlinenoexcept |
Constructor.
Creates a new UDP server. If the derived class defines a Protocol type that is not void, an instance of that protocol is created and attached to the server.
|
staticconstexpr |
Flag indicating server association (false for UDP servers)