userver: concurrent::Consumer< QueueType, ConsumerToken, EmplaceEnablerType > Class Template Reference
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
concurrent::Consumer< QueueType, ConsumerToken, EmplaceEnablerType > Class Template Referencefinal

Your opinion will help to improve our service

Leave a feedback >

#include <userver/concurrent/queue_helpers.hpp>

Detailed Description

template<typename QueueType, typename ConsumerToken, typename EmplaceEnablerType>
class concurrent::Consumer< QueueType, ConsumerToken, EmplaceEnablerType >
Warning
A single Consumer must not be used from multiple threads concurrently

Definition at line 95 of file queue_helpers.hpp.

Public Member Functions

 Consumer (const Consumer &)=delete
 
 Consumer (Consumer &&) noexcept=default
 
Consumeroperator= (const Consumer &)=delete
 
Consumeroperator= (Consumer &&other) noexcept
 
bool Pop (ValueType &value, engine::Deadline deadline={}) const
 
bool PopNoblock (ValueType &value) const
 
void Reset () &&
 
std::shared_ptr< const QueueType > Queue () const
 Const access to source queue.
 

Constructor & Destructor Documentation

◆ ~Consumer()

template<typename QueueType, typename ConsumerToken, typename EmplaceEnablerType>
concurrent::Consumer< QueueType, ConsumerToken, EmplaceEnablerType >::~Consumer ( )
inline

Definition at line 114 of file queue_helpers.hpp.

Member Function Documentation

◆ operator=()

template<typename QueueType, typename ConsumerToken, typename EmplaceEnablerType>
Consumer & concurrent::Consumer< QueueType, ConsumerToken, EmplaceEnablerType >::operator= ( Consumer< QueueType, ConsumerToken, EmplaceEnablerType > && other)
inlinenoexcept

Definition at line 108 of file queue_helpers.hpp.

◆ Pop()

template<typename QueueType, typename ConsumerToken, typename EmplaceEnablerType>
bool concurrent::Consumer< QueueType, ConsumerToken, EmplaceEnablerType >::Pop ( ValueType & value,
engine::Deadline deadline = {} ) const
inlinenodiscard

Pop element from queue. May wait asynchronously if the queue is empty, but the producer is alive.

Returns
whether something was popped before the deadline.
Note
false can be returned before the deadline when the producer is no longer alive.
Warning
Be careful when using a method in a loop. The engine::Deadline is a wrapper over std::chrono::time_point, not duration! If you need a timeout, you must reconstruct the deadline in the loop.

Definition at line 127 of file queue_helpers.hpp.

◆ PopNoblock()

template<typename QueueType, typename ConsumerToken, typename EmplaceEnablerType>
bool concurrent::Consumer< QueueType, ConsumerToken, EmplaceEnablerType >::PopNoblock ( ValueType & value) const
inlinenodiscard

Try to pop element from queue without blocking. May be used in non-coroutine environment

Returns
whether something was popped.

Definition at line 136 of file queue_helpers.hpp.

◆ Queue()

template<typename QueueType, typename ConsumerToken, typename EmplaceEnablerType>
std::shared_ptr< const QueueType > concurrent::Consumer< QueueType, ConsumerToken, EmplaceEnablerType >::Queue ( ) const
inlinenodiscard

Const access to source queue.

Definition at line 148 of file queue_helpers.hpp.

◆ Reset()

template<typename QueueType, typename ConsumerToken, typename EmplaceEnablerType>
void concurrent::Consumer< QueueType, ConsumerToken, EmplaceEnablerType >::Reset ( ) &&
inline

Definition at line 141 of file queue_helpers.hpp.


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