68 using SearchResult = std::vector<std::map<std::string, std::string>>;
77 std::shared_ptr<dht::Logger>
l = {});
80 void setToken(std::string token) { serverToken_ = std::move(token); }
82 static void lookupUri(std::string_view uri,
91 const std::string& name,
92 const std::string&
owner,
102 std::string serverUrl_;
103 std::string serverToken_;
104 std::filesystem::path cachePath_;
106 std::mutex cacheLock_ {};
107 std::shared_ptr<dht::Logger> logger_;
113 std::shared_ptr<asio::io_context> httpContext_;
114 std::shared_ptr<dht::http::Resolver> resolver_;
115 std::mutex requestsMtx_ {};
116 std::set<std::shared_ptr<dht::http::Request>> requests_;
118 std::map<std::string, std::string> pendingRegistrations_ {};
120 std::map<std::string, std::pair<std::string, std::string>> nameCache_ {};
121 std::map<std::string, std::pair<std::string, std::string>> addrCache_ {};
123 std::weak_ptr<Task> saveTask_;
125 void setHeaderFields(dht::http::Request& request);
127 std::pair<std::string, std::string> nameCache(
const std::string& addr)
129 std::lock_guard
l(cacheLock_);
130 auto cacheRes = nameCache_.find(addr);
131 return cacheRes != nameCache_.end() ?
cacheRes->second : std::pair<std::string, std::string> {};
133 std::pair<std::string, std::string> addrCache(
const std::string& name)
135 std::lock_guard
l(cacheLock_);
136 auto cacheRes = addrCache_.find(name);
137 return cacheRes != addrCache_.end() ?
cacheRes->second : std::pair<std::string, std::string> {};
140 static bool verify(
const std::string& name,
142 const std::string& signature);
144 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)