Horizon
pool_manager.hpp
1 #pragma once
2 #include "util/uuid.hpp"
3 #include <map>
4 #include <sigc++/sigc++.h>
5 #include <vector>
6 #include "pool_info.hpp"
7 
8 namespace horizon {
9 
10 class PoolManagerPool : public PoolInfo {
11 public:
12  using PoolInfo::PoolInfo;
13  bool enabled = false;
14 };
15 
16 class PoolManager {
17 public:
18  PoolManager();
19  static PoolManager &get();
20  static void init();
21  std::string get_pool_base_path(const UUID &uu);
22  void set_pool_enabled(const std::string &base_path, bool enabled);
23  bool get_pool_enabled(const std::string &base_path) const;
24  void add_pool(const std::string &base_path);
25  void remove_pool(const std::string &base_path);
26  void update_pool(const std::string &base_path);
27  const std::map<std::string, PoolManagerPool> &get_pools() const;
28  const PoolManagerPool *get_by_uuid(const UUID &uu) const;
29  const PoolManagerPool *get_for_file(const std::string &filename) const;
30 
31 private:
32  std::map<std::string, PoolManagerPool> pools;
33  void set_pool_enabled_no_write(const std::string &base_path, bool enabled);
34  void write();
35 };
36 } // namespace horizon
Definition: pool_info.hpp:11
Definition: pool_manager.hpp:10
Definition: pool_manager.hpp:16
This class encapsulates a UUID and allows it to be uses as a value type.
Definition: uuid.hpp:16