file_backend.hpp
1 
6 #pragma once
7 
8 #include <chrono>
9 #include <string>
10 
11 #include <rapidsmpf/bootstrap/backend.hpp>
12 #include <rapidsmpf/bootstrap/bootstrap.hpp>
13 
15 
33 class FileBackend : public Backend {
34  public:
40  explicit FileBackend(Context ctx);
41 
42  ~FileBackend() override;
43 
47  void put(std::string const& key, std::string const& value) override;
48 
52  std::string get(std::string const& key, Duration timeout) override;
53 
57  void barrier() override;
58 
62  void sync() override;
63 
64  private:
65  Context ctx_;
66  std::string coord_dir_;
67  std::string kv_dir_;
68  std::string barrier_dir_;
69  std::size_t barrier_count_{0};
70 
76  [[nodiscard]] std::string get_kv_path(std::string const& key) const;
77 
83  [[nodiscard]] std::string get_barrier_path(std::size_t barrier_id) const;
84 
90  [[nodiscard]] std::string get_rank_alive_path(Rank rank) const;
91 
99  bool wait_for_file(
100  std::string const& path, Duration timeout = std::chrono::seconds{30}
101  );
102 
109  void write_file(std::string const& path, std::string const& content);
110 
116  std::string read_file(std::string const& path);
117 
125  void cleanup_coordination_directory();
126 };
127 
128 } // namespace rapidsmpf::bootstrap::detail
Abstract interface for bootstrap coordination backends.
Definition: backend.hpp:64
File-based coordination backend implementation.
FileBackend(Context ctx)
Construct a file backend.
void barrier() override
Perform a barrier synchronization.
void put(std::string const &key, std::string const &value) override
Store a key-value pair (rank 0 only).
void sync() override
Ensure all previous put() operations are globally visible.
std::string get(std::string const &key, Duration timeout) override
Retrieve a value, blocking until available or timeout occurs.
std::int32_t Rank
Type alias for communicator::Rank.
Definition: types.hpp:14
std::chrono::duration< double > Duration
Type alias for Duration type.
Definition: types.hpp:17
Context information for the current process/rank.
Definition: bootstrap.hpp:24