15#ifndef ALICEO2_FIFOUTILS_H_
16#define ALICEO2_FIFOUTILS_H_
33 std::lock_guard<std::mutex> lock(mMutex);
39 std::lock_guard<std::mutex> lock(mMutex);
45 std::lock_guard<std::mutex> lock(mMutex);
46 return mQueue.empty();
49 template <
typename... Args>
52 std::lock_guard<std::mutex> lock(mMutex);
53 mQueue.emplace_back(std::forward<Args>(args)...);
58 std::lock_guard<std::mutex> lock(mMutex);
59 if (!mQueue.empty()) {
66 std::lock_guard<std::mutex> lock(mMutex);
68 throw std::runtime_error(
"attempt to access front of empty queue");
70 return mQueue.front();
75 std::lock_guard<std::mutex> lock(mMutex);
77 throw std::runtime_error(
"attempt to access front of empty queue");
79 return mQueue.front();
84 std::lock_guard<std::mutex> lock(mMutex);
88 return &mQueue.front();
93 std::lock_guard<std::mutex> lock(mMutex);
97 return &mQueue.front();
103 mutable std::mutex mMutex;
104 std::deque<T> mQueue{};
const T * frontPtr() const
void push(Args &&... args)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Common utility functions.