#include namespace c10d { const std::chrono::milliseconds& Store::getTimeout() const noexcept { return timeout_; } // Set timeout function void Store::setTimeout(const std::chrono::milliseconds& timeout) { timeout_ = timeout; } void Store::set(const std::string& key, const std::string& value) { set(key, std::vector(value.begin(), value.end())); } std::string Store::compareSet( const std::string& key, const std::string& currentValue, const std::string& newValue) { auto value = compareSet( key, std::vector(currentValue.begin(), currentValue.end()), std::vector(newValue.begin(), newValue.end())); return std::string(value.begin(), value.end()); } std::string Store::get_to_str(const std::string& key) { auto value = get(key); return std::string(value.begin(), value.end()); } void Store::append(const std::string& key, const std::vector& value) { // This fallback depends on compareSet std::vector expected = value; std::vector current; // cannot use get(key) as it might block forever if the key doesn't exist current = compareSet(key, current, expected); while (current != expected) { expected = current; expected.insert(expected.end(), value.begin(), value.end()); current = compareSet(key, current, expected); } } std::vector> Store::multiGet( const std::vector& keys) { std::vector> result; result.reserve(keys.size()); for (auto& key : keys) { result.emplace_back(get(key)); } return result; } void Store::multiSet( const std::vector& keys, const std::vector>& values) { for (auto i : ::c10::irange(keys.size())) { set(keys[i], values[i]); } } bool Store::hasExtendedApi() const { return false; } } // namespace c10d