35static bool Ping(
const std::string& url,
long port = 8443L) {
36 CURL* c = curl_easy_init();
37 curl_easy_setopt(c, CURLOPT_URL, url.c_str());
38 curl_easy_setopt(c, CURLOPT_PORT, port);
39 curl_easy_setopt(c, CURLOPT_TIMEOUT_MS, 2000L);
40 CURLcode result = curl_easy_perform(c);
42 bool ok = result == CURLE_RECV_ERROR || result == CURLE_OK;
43 DEBUG_LOG <<
"Checked mdns host: " << url <<
": "
44 << (ok ?
"ok" : curl_easy_strerror(result));
54 std::unique_lock lock(m_mutex);
55 auto found = std::find_if(m_cache.begin(), m_cache.end(),
56 [entry](
Entry& e) { return e.ip == entry.ip; });
57 DEBUG_LOG <<
"Added mdns cache entry, ip: " << entry.ip
58 <<
", status: " << (found == m_cache.end() ?
"true" :
"false");
59 if (found != m_cache.end())
return false;
60 m_cache.push_back(entry);
65 const std::string& _ip,
const std::string& _port) {
66 return Add(
Entry(service, host, _ip, _port));
70 return Add(
Entry(
"opencpn",
"unknown", _ip, _port));
74 std::unique_lock lock(m_mutex);
75 for (
auto it = m_cache.begin(); it != m_cache.end();) {
Singleton cache for hosts looked up using mdns.
bool Add(const Entry &entry)
Add new entry to the cache.
void Validate()
Check that all entries are accessible, remove stale ones.
Enhanced logging interface on top of wx/log.h.