35 lines
573 B
C++
35 lines
573 B
C++
#pragma once
|
|
|
|
#include <functional>
|
|
#include <memory>
|
|
#include <mutex>
|
|
#include <thread>
|
|
|
|
#include "file.h"
|
|
#include "hash.h"
|
|
|
|
class HasherThread {
|
|
public:
|
|
using getNext_f = std::function<std::shared_ptr<File>()>;
|
|
using doneCallback_f = std::function<void(Hash&& h, std::shared_ptr<File>)>;
|
|
|
|
HasherThread(std::mutex& mutex, getNext_f, doneCallback_f);
|
|
~HasherThread();
|
|
|
|
void start();
|
|
void stop();
|
|
|
|
void waitfor();
|
|
|
|
private:
|
|
void threadLoop();
|
|
|
|
std::thread thread;
|
|
std::mutex& mutex;
|
|
|
|
getNext_f getNext;
|
|
doneCallback_f doneCallback;
|
|
|
|
bool shouldrun = false;
|
|
};
|