Radix Relay
Hybrid mesh communications with Signal Protocol encryption
Loading...
Searching...
No Matches
radix_relay::async::async_queue< T > Class Template Reference

Thread-safe asynchronous queue for message passing between coroutines. More...

#include <async_queue.hpp>

Public Member Functions

 async_queue (const std::shared_ptr< boost::asio::io_context > &io_context)
 Constructs a new async queue.
 
 async_queue (const async_queue &)=delete
 
auto operator= (const async_queue &) -> async_queue &=delete
 
 async_queue (async_queue &&)=delete
 
auto operator= (async_queue &&) -> async_queue &=delete
 
 ~async_queue ()=default
 
auto push (T value) -> void
 Pushes a value onto the queue (non-blocking).
 
auto pop (std::shared_ptr< boost::asio::cancellation_slot > cancel_slot=nullptr) -> boost::asio::awaitable< T >
 Asynchronously pops a value from the queue (coroutine).
 
auto try_pop () -> std::optional< T >
 Attempts to pop a value without blocking.
 
auto empty () const -> bool
 Checks if the queue is empty.
 
auto size () const -> std::size_t
 Returns the current number of elements in the queue.
 
auto close () -> void
 Closes the queue, preventing further operations.
 

Static Public Attributes

static const std::size_t channel_size { 1024 }
 Maximum number of elements the queue can hold.
 

Detailed Description

template<typename T>
class radix_relay::async::async_queue< T >

Thread-safe asynchronous queue for message passing between coroutines.

Template Parameters
TThe type of elements stored in the queue

Provides thread-safe push/pop operations using Boost.Asio concurrent channels. Supports coroutine-based async pop operations with optional cancellation.

Definition at line 25 of file async_queue.hpp.

Constructor & Destructor Documentation

◆ async_queue() [1/3]

template<typename T >
radix_relay::async::async_queue< T >::async_queue ( const std::shared_ptr< boost::asio::io_context > &  io_context)
inlineexplicit

Constructs a new async queue.

Parameters
io_contextShared pointer to the Boost.Asio io_context for async operations

Definition at line 36 of file async_queue.hpp.

◆ async_queue() [2/3]

template<typename T >
radix_relay::async::async_queue< T >::async_queue ( const async_queue< T > &  )
delete

◆ async_queue() [3/3]

template<typename T >
radix_relay::async::async_queue< T >::async_queue ( async_queue< T > &&  )
delete

◆ ~async_queue()

template<typename T >
radix_relay::async::async_queue< T >::~async_queue ( )
default

Member Function Documentation

◆ close()

template<typename T >
auto radix_relay::async::async_queue< T >::close ( ) -> void
inline

Closes the queue, preventing further operations.

Definition at line 119 of file async_queue.hpp.

◆ empty()

template<typename T >
auto radix_relay::async::async_queue< T >::empty ( ) const -> bool
inline

Checks if the queue is empty.

Returns
true if the queue contains no elements, false otherwise

Definition at line 107 of file async_queue.hpp.

◆ operator=() [1/2]

template<typename T >
auto radix_relay::async::async_queue< T >::operator= ( async_queue< T > &&  ) -> async_queue &=delete
delete

◆ operator=() [2/2]

template<typename T >
auto radix_relay::async::async_queue< T >::operator= ( const async_queue< T > &  ) -> async_queue &=delete
delete

◆ pop()

template<typename T >
auto radix_relay::async::async_queue< T >::pop ( std::shared_ptr< boost::asio::cancellation_slot >  cancel_slot = nullptr) -> boost::asio::awaitable<T>
inline

Asynchronously pops a value from the queue (coroutine).

Parameters
cancel_slotOptional cancellation slot for operation cancellation
Returns
Awaitable that yields the next value from the queue
Exceptions
boost::system::system_erroron cancellation or channel errors

Definition at line 64 of file async_queue.hpp.

◆ push()

template<typename T >
auto radix_relay::async::async_queue< T >::push ( value) -> void
inline

Pushes a value onto the queue (non-blocking).

Parameters
valueThe value to push (moved into the queue)

Definition at line 51 of file async_queue.hpp.

◆ size()

template<typename T >
auto radix_relay::async::async_queue< T >::size ( ) const -> std::size_t
inline

Returns the current number of elements in the queue.

Returns
Current queue size

Definition at line 114 of file async_queue.hpp.

◆ try_pop()

template<typename T >
auto radix_relay::async::async_queue< T >::try_pop ( ) -> std::optional<T>
inline

Attempts to pop a value without blocking.

Returns
Optional containing the value if available, std::nullopt if queue is empty

Use for draining queues or non-blocking checks. For event-driven processing, prefer pop().

Definition at line 89 of file async_queue.hpp.

Member Data Documentation

◆ channel_size

template<typename T >
const std::size_t radix_relay::async::async_queue< T >::channel_size { 1024 }
static

Maximum number of elements the queue can hold.

Definition at line 29 of file async_queue.hpp.


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