Line data Source code
1 : /*! 2 : * \file esys/repo/tui/eventqueue.cpp 3 : * \brief 4 : * 5 : * \cond 6 : * __legal_b__ 7 : * 8 : * Copyright (c) 2026 Michel Gillet 9 : * Distributed under the MIT License. 10 : * (See accompanying file LICENSE.txt or 11 : * copy at https://opensource.org/licenses/MIT) 12 : * 13 : * __legal_e__ 14 : * \endcond 15 : * 16 : */ 17 : 18 : #include "esys/repo/esysrepo_prec.h" 19 : #include "esys/repo/tui/eventqueue.h" 20 : 21 : namespace esys::repo::tui 22 : { 23 : 24 1 : EventQueue::EventQueue() = default; 25 : 26 1 : EventQueue::~EventQueue() = default; 27 : 28 2 : void EventQueue::push(const progress::SyncEvent &event) 29 : { 30 2 : std::lock_guard lock(m_mutex); 31 2 : m_queue.push_back(event); 32 2 : } 33 : 34 0 : void EventQueue::push(progress::SyncEvent &&event) 35 : { 36 0 : std::lock_guard lock(m_mutex); 37 0 : m_queue.push_back(std::move(event)); 38 0 : } 39 : 40 1 : void EventQueue::drain(std::vector<progress::SyncEvent> &out) 41 : { 42 1 : std::lock_guard lock(m_mutex); 43 1 : out.swap(m_queue); 44 1 : m_queue.clear(); 45 1 : } 46 : 47 2 : std::size_t EventQueue::size() const 48 : { 49 2 : std::lock_guard lock(m_mutex); 50 2 : return m_queue.size(); 51 2 : } 52 : 53 : } // namespace esys::repo::tui