tin  1.5.9
tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters > Class Template Reference

#include <sync.h>

Collaboration diagram for tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >:
Collaboration graph

Classes

class  receive_awaitable
 
class  send_awaitable
 

Public Types

using value_type = T
 
using overflow_policy = OverflowPolicy
 

Public Member Functions

bool try_send (T const &value)
 
bool try_send (T &&value)
 
bool try_send_from_isr (T const &value)
 
bool try_send_from_isr (T &&value)
 
bool try_receive (T &value)
 
bool empty () const noexcept
 
bool full () const noexcept
 
std::size_t size () const noexcept
 
bool latest (T &value) const
 
runtime::sender< T > sender () noexcept
 
runtime::receiver< T > receiver () noexcept
 
runtime::latest_reader< T > latest_reader () const noexcept
 
template<typename Value >
auto send (Value &&value)
 
receive_awaitable receive () noexcept
 

Static Public Member Functions

static constexpr std::size_t capacity () noexcept
 

Static Public Attributes

static constexpr std::size_t static_capacity = Capacity
 

Detailed Description

template<typename T, std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
class tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >

Fixed-capacity cooperative channel.

Sends are non-blocking and report whether the value was accepted. Receivers can either poll with try_receive or await receive.

Member Typedef Documentation

◆ overflow_policy

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
using tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::overflow_policy = OverflowPolicy

◆ value_type

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
using tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::value_type = T

Member Function Documentation

◆ capacity()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
static constexpr std::size_t tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::capacity ( )
inlinestaticconstexprnoexcept

◆ empty()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
bool tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::empty ( ) const
inlinenoexcept

◆ full()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
bool tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::full ( ) const
inlinenoexcept

◆ latest()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
bool tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::latest ( T &  value) const
inline

◆ latest_reader()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
runtime::latest_reader<T> tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::latest_reader ( ) const
inlinenoexcept

◆ receive()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
receive_awaitable tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::receive ( )
inlinenoexcept

◆ receiver()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
runtime::receiver<T> tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::receiver ( )
inlinenoexcept

◆ send()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
template<typename Value >
auto tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::send ( Value &&  value)
inline

◆ sender()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
runtime::sender<T> tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::sender ( )
inlinenoexcept

◆ size()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
std::size_t tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::size ( ) const
inlinenoexcept

◆ try_receive()

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
bool tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::try_receive ( T &  value)
inline

◆ try_send() [1/2]

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
bool tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::try_send ( T &&  value)
inline

◆ try_send() [2/2]

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
bool tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::try_send ( T const &  value)
inline

◆ try_send_from_isr() [1/2]

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
bool tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::try_send_from_isr ( T &&  value)
inline

◆ try_send_from_isr() [2/2]

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
bool tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::try_send_from_isr ( T const &  value)
inline

Member Data Documentation

◆ static_capacity

template<typename T , std::size_t Capacity, typename OverflowPolicy = overflow::reject_newest, std::size_t MaxWaiters = 4U>
constexpr std::size_t tsm::runtime::channel< T, Capacity, OverflowPolicy, MaxWaiters >::static_capacity = Capacity
staticconstexpr

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