Horizon
pool_cache_monitor.hpp
1 #pragma once
2 #include <giomm/file.h>
3 #include <thread>
4 #include <glibmm/dispatcher.h>
5 #include "util/changeable.hpp"
6 #include "pool_cache_status.hpp"
7 
8 namespace horizon {
9 class PoolCacheMonitor : public Changeable, public sigc::trackable {
10 public:
11  PoolCacheMonitor(const std::string &a_pool_base_path, const std::string &a_pool_cache_path);
12  void update();
13  void update_now();
14 
15  const PoolCacheStatus &get_status() const;
17 
18 private:
19  const std::string pool_base_path;
20  const std::string pool_cache_path;
21  bool really_update();
22 
23 
24  Glib::RefPtr<Gio::FileMonitor> monitor;
25  void changed(const Glib::RefPtr<Gio::File> &file, const Glib::RefPtr<Gio::File> &file_other,
26  Gio::FileMonitorEvent event);
27  sigc::connection timer_connection;
28 
29 
30  PoolCacheStatus status;
31 
32  PoolCacheStatus status_thread;
33  std::mutex mutex;
34  std::thread thread;
35  void worker();
36  Glib::Dispatcher dispatcher;
37 };
38 } // namespace horizon
Definition: changeable.hpp:5
Definition: pool_cache_monitor.hpp:9
Definition: pool_cache_status.hpp:11