9#ifndef ZYPP_NG_THREAD_ASYNCQUEUE_H_INCLUDED 
   10#define ZYPP_NG_THREAD_ASYNCQUEUE_H_INCLUDED 
   12#include <zypp-core/zyppng/base/AbstractEventSource> 
   19#include <condition_variable> 
   42  template< 
class Message >
 
   47    using Ptr = std::shared_ptr<AsyncQueue>;
 
   63    template< 
typename T = Message >
 
   72    template< 
typename T = Message >
 
   75        std::lock_guard lk( 
_mut );
 
 
   85      std::unique_lock<std::mutex> lk( 
_mut );
 
   86      _cv.wait( lk, [
this](){ 
return _messages.size() > 0; } );
 
 
   97      std::lock_guard lk( 
_mut );
 
 
  143    std::condition_variable 
_cv;
 
 
  152    static std::shared_ptr<AsyncQueueWatch> 
create ( std::shared_ptr<AsyncQueueBase> queue );
 
  160    void onFdReady(
int fd, 
int events) 
override;
 
 
void addWatch(AsyncQueueWatch &watch)
virtual ~AsyncQueueBase()
void removeWatch(AsyncQueueWatch &watch)
std::set< AsyncQueueWatch * > _watches
std::recursive_mutex _watchLock
void onSignal(int signal) override
AsyncQueueWatch(std::shared_ptr< AsyncQueueBase > &&queue)
void onFdReady(int fd, int events) override
SignalProxy< void()> sigMessageAvailable()
static std::shared_ptr< AsyncQueueWatch > create(std::shared_ptr< AsyncQueueBase > queue)
std::condition_variable _cv
std::optional< Message > tryPopUnlocked()
AsyncQueue(const AsyncQueue &)=delete
std::optional< Message > tryPop()
std::queue< Message > _messages
void pushUnlocked(T &&value)
std::shared_ptr< AsyncQueue > Ptr
AsyncQueue & operator=(const AsyncQueue &)=delete
#define ZYPP_DECLARE_PRIVATE(Class)
#define LIBZYPP_NG_EXPORT