67 using SearchResult = std::vector<std::map<std::string, std::string>>;
78 void setToken(std::string token) { serverToken_ = std::move(token); }
87 const std::string& name,
88 const std::string&
owner,
98 std::string serverUrl_;
99 std::string serverToken_;
100 std::filesystem::path cachePath_;
102 std::mutex cacheLock_ {};
103 std::shared_ptr<dht::Logger> logger_;
109 std::shared_ptr<asio::io_context> httpContext_;
110 std::shared_ptr<dht::http::Resolver> resolver_;
111 std::mutex requestsMtx_ {};
112 std::set<std::shared_ptr<dht::http::Request>> requests_;
114 std::map<std::string, std::string> pendingRegistrations_ {};
116 std::map<std::string, std::pair<std::string, std::string>> nameCache_ {};
117 std::map<std::string, std::pair<std::string, std::string>> addrCache_ {};
119 asio::steady_timer saveTask_;
121 void setHeaderFields(dht::http::Request& request);
123 std::pair<std::string, std::string> nameCache(
const std::string& addr)
125 std::lock_guard
l(cacheLock_);
126 auto cacheRes = nameCache_.find(addr);
127 return cacheRes != nameCache_.end() ?
cacheRes->second : std::pair<std::string, std::string> {};
129 std::pair<std::string, std::string> addrCache(
const std::string& name)
131 std::lock_guard
l(cacheLock_);
132 auto cacheRes = addrCache_.find(name);
133 return cacheRes != addrCache_.end() ?
cacheRes->second : std::pair<std::string, std::string> {};
136 static bool verify(
const std::string& name,
const dht::crypto::PublicKey&
publickey,
const std::string& signature);
138 void scheduleCacheSave();
void registerName(const std::string &addr, const std::string &name, const std::string &owner, RegistrationCallback cb, const std::string &signedname, const std::string &publickey)