#pragma once #include #include #include #include namespace c10d { class TORCH_API HashStore : public Store { public: ~HashStore() override = default; void set(const std::string& key, const std::vector& data) override; std::vector compareSet( const std::string& key, const std::vector& expectedValue, const std::vector& desiredValue) override; std::vector get(const std::string& key) override; void wait(const std::vector& keys) override { wait(keys, timeout_); } void wait( const std::vector& keys, const std::chrono::milliseconds& timeout) override; int64_t add(const std::string& key, int64_t value) override; int64_t getNumKeys() override; bool check(const std::vector& keys) override; bool deleteKey(const std::string& key) override; void append(const std::string& key, const std::vector& value) override; std::vector> multiGet( const std::vector& keys) override; void multiSet( const std::vector& keys, const std::vector>& values) override; // Returns true if this store support append, multiGet and multiSet bool hasExtendedApi() const override; protected: std::unordered_map> map_; std::mutex m_; std::condition_variable cv_; }; } // namespace c10d