file_backend.hpp
1 
6 #pragma once
7 
8 #include <chrono>
9 #include <string>
10 
11 #include <rapidsmpf/bootstrap/bootstrap.hpp>
12 
14 
32 class FileBackend {
33  public:
39  explicit FileBackend(Context ctx);
40 
41  ~FileBackend();
42 
49  void put(std::string const& key, std::string const& value);
50 
58  std::string get(std::string const& key, Duration timeout);
59 
65  void barrier();
66 
74  void broadcast(void* data, std::size_t size, Rank root);
75 
76  private:
77  Context ctx_;
78  std::string coord_dir_;
79  std::string kv_dir_;
80  std::string barrier_dir_;
81  std::size_t barrier_count_{0};
82 
88  [[nodiscard]] std::string get_kv_path(std::string const& key) const;
89 
95  [[nodiscard]] std::string get_barrier_path(std::size_t barrier_id) const;
96 
102  [[nodiscard]] std::string get_rank_alive_path(Rank rank) const;
103 
111  bool wait_for_file(
112  std::string const& path, Duration timeout = std::chrono::seconds{30}
113  );
114 
121  void write_file(std::string const& path, std::string const& content);
122 
128  std::string read_file(std::string const& path);
129 
137  void cleanup_coordination_directory();
138 };
139 
140 } // namespace rapidsmpf::bootstrap::detail
File-based coordination backend implementation.
FileBackend(Context ctx)
Construct a file backend.
void barrier()
Perform a barrier synchronization.
void put(std::string const &key, std::string const &value)
Store a key-value pair.
std::string get(std::string const &key, Duration timeout)
Retrieve a value, blocking until available or timeout occurs.
void broadcast(void *data, std::size_t size, Rank root)
Broadcast data from root to all ranks.
std::int32_t Rank
Type alias for communicator::Rank.
Definition: bootstrap.hpp:20
Context information for the current process/rank.
Definition: bootstrap.hpp:53