1#ifndef STOPPABLETHREAD_H
2#define STOPPABLETHREAD_H
18#include <condition_variable>
60 virtual std::string
Status();
virtual std::string Status()
virtual size_t GetRate()=0
static void start_status_thread()
StoppableThread(StoppableThread &&) noexcept=delete
static std::string AnyThreadStatus()
StoppableThread(std::string name)
static void ClearAllQueues()
virtual std::string EndStatus()
std::atomic_size_t & ItemsPopped()
std::atomic_long & InputSize()
virtual size_t GetItemsPushed()=0
static std::vector< StoppableThread * > GetAll()
static std::map< std::string, StoppableThread * > fThreadMap
StoppableThread(const StoppableThread &)=delete
static void join_status_thread()
void ItemsPopped(size_t val)
static std::string AllThreadStatus()
static size_t fColumnWidth
static bool fStatusThreadOn
static void status_out_loop()
virtual std::string Progress()
static size_t fStatusWidth
static size_t StatusWidth()
std::condition_variable fPausedWait
static std::string AllThreadProgress()
static void StatusWidth(size_t val)
virtual size_t GetItemsPopped()=0
static std::string AllThreadHeader()
static StoppableThread * Get(const std::string &name)
void InputSize(int64_t val)
static std::thread fStatusThread
static void stop_status_thread()
static void ColumnWidth(size_t val)
std::atomic_size_t fItemsPopped
number of items popped from input queue
static bool AnyThreadRunning()
virtual void ClearQueue()
std::atomic_bool fForceStop
void IncrementItemsPopped()
static size_t ColumnWidth()
std::atomic_long fInputSize
std::atomic_bool fRunning
virtual size_t GetItemsCurrent()=0
virtual bool Iteration()=0