file_backend.hpp
1 
6 #pragma once
7 
8 #include <chrono>
9 #include <string>
10 #include <string_view>
11 
12 #include <rapidsmpf/bootstrap/backend.hpp>
13 #include <rapidsmpf/bootstrap/bootstrap.hpp>
14 
16 
34 class FileBackend : public Backend {
35  public:
41  explicit FileBackend(Context ctx);
42 
43  ~FileBackend() override;
44 
48  void put(std::string const& key, std::string_view value) override;
49 
53  std::string get(std::string const& key, Duration timeout) override;
54 
58  void barrier() override;
59 
63  void sync() override;
64 
65  private:
66  Context ctx_;
67  std::string coord_dir_;
68  std::string kv_dir_;
69  std::string barrier_dir_;
70  std::size_t barrier_count_{0};
71 
77  [[nodiscard]] std::string get_kv_path(std::string const& key) const;
78 
84  [[nodiscard]] std::string get_barrier_path(std::size_t barrier_id) const;
85 
91  [[nodiscard]] std::string get_rank_alive_path(Rank rank) const;
92 
100  bool wait_for_file(
101  std::string const& path, Duration timeout = std::chrono::seconds{30}
102  );
103 
110  void write_file(std::string const& path, std::string_view content);
111 
117  std::string read_file(std::string const& path);
118 
126  void cleanup_coordination_directory();
127 };
128 
129 } // namespace rapidsmpf::bootstrap::detail
Abstract interface for bootstrap coordination backends.
Definition: backend.hpp:80
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_view 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:25