31 void request() { flag_.store(
true, std::memory_order_release); }
32 bool requested()
const {
return flag_.load(std::memory_order_acquire); }
35 void reset() { flag_.store(
false, std::memory_order_release); }
38 std::atomic<bool> flag_{
false};
44 const std::string& current_path,
int scanned,
int total)>;
49 std::vector<PluginInfo> results,
bool cancelled)>;
76 return running_.load(std::memory_order_acquire);
87 std::atomic<bool> running_{
false};
88 std::mutex start_mutex_;
BackgroundScanner & operator=(const BackgroundScanner &)=delete
void join()
Block until the worker thread finishes. Safe to call when idle.
void cancel()
Request the running scan cancel.
BackgroundScanner()=default
bool start(ScanWorkerFn worker, ScanProgressCallback progress, ScanCompletionCallback completion)
Start a scan. Returns false if a scan is already running.
~BackgroundScanner()
Definition background_scanner.hpp:60
bool is_running() const
True while the worker thread is active.
Definition background_scanner.hpp:75
BackgroundScanner(const BackgroundScanner &)=delete
Shared cancel flag.
Definition background_scanner.hpp:29
bool requested() const
Definition background_scanner.hpp:32
void reset()
Clear the flag for a fresh run.
Definition background_scanner.hpp:35
void request()
Definition background_scanner.hpp:31
Bounded event contracts shared by host ingress and graph-authored nodes.
Definition anticipation_eligibility.hpp:9
std::function< void( std::vector< PluginInfo > results, bool cancelled)> ScanCompletionCallback
Completion callback invoked when the scan finishes (or cancel lands).
Definition background_scanner.hpp:48
std::function< std::vector< PluginInfo >( const CancelToken &token, const ScanProgressCallback &progress)> ScanWorkerFn
Worker signature: runs on the background thread.
Definition background_scanner.hpp:54
std::function< void( const std::string ¤t_path, int scanned, int total)> ScanProgressCallback
Progress callback invoked from the worker thread.
Definition background_scanner.hpp:43