MCPcopy Create free account
hub / github.com/defold/defold / UpdateBrowser

Function UpdateBrowser

engine/dlib/src/dlib/mdns.cpp:2507–2553  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2505 }
2506
2507 void UpdateBrowser(HBrowser browser)
2508 {
2509 if (browser == 0)
2510 return;
2511
2512 const uint64_t now = GetNow();
2513 if (now >= browser->m_NextInterfaceRefresh)
2514 {
2515 const bool interface_changed = RefreshBrowserInterfaceAddresses(browser);
2516 EnsureMemberships(browser->m_Socket, browser->m_InterfaceAddresses, &browser->m_MembershipAddresses);
2517 if (interface_changed)
2518 {
2519 // A real topology change should trigger a fresh browse burst on
2520 // the new subnet, but periodic interface polling must not keep
2521 // collapsing the backoff on stable networks.
2522 ResetBrowserQueryBackoff(browser, now);
2523 }
2524 browser->m_NextInterfaceRefresh = now + SecondsToMicroSeconds(MDNS_INTERFACE_REFRESH_INTERVAL);
2525 }
2526
2527 uint64_t next_query_due = browser->m_NextQuery;
2528 const uint64_t refresh_deadline = GetBrowserRefreshDeadline(browser);
2529 if (next_query_due == 0 || (refresh_deadline != 0 && refresh_deadline < next_query_due))
2530 next_query_due = refresh_deadline;
2531
2532 if (next_query_due == 0 || now >= next_query_due)
2533 {
2534 uint32_t query_size = BuildQueryMessage(browser, now, browser->m_Buffer, sizeof(browser->m_Buffer));
2535 if (query_size > 0)
2536 {
2537 SendPacketOnInterfaces(browser->m_Socket, browser->m_Buffer, query_size, browser->m_InterfaceAddresses);
2538 }
2539 const uint64_t retry_at = now + browser->m_QueryInterval;
2540 browser->m_NextQuery = retry_at;
2541 if (query_size > 0)
2542 RescheduleBrowserRefreshes(browser, now, retry_at);
2543 if (browser->m_QueryInterval < MDNS_BROWSER_MAX_QUERY_INTERVAL)
2544 {
2545 browser->m_QueryInterval *= 3;
2546 if (browser->m_QueryInterval > MDNS_BROWSER_MAX_QUERY_INTERVAL)
2547 browser->m_QueryInterval = MDNS_BROWSER_MAX_QUERY_INTERVAL;
2548 }
2549 }
2550
2551 HandleBrowserResponses(browser);
2552 ExpireBrowserEntries(browser);
2553 }
2554
2555 Result DeleteBrowser(HBrowser browser)
2556 {

Callers 2

PumpFunction · 0.85
WaitForMatchingQuestionFunction · 0.85

Calls 11

GetNowFunction · 0.85
EnsureMembershipsFunction · 0.85
ResetBrowserQueryBackoffFunction · 0.85
SecondsToMicroSecondsFunction · 0.85
BuildQueryMessageFunction · 0.85
SendPacketOnInterfacesFunction · 0.85
HandleBrowserResponsesFunction · 0.85
ExpireBrowserEntriesFunction · 0.85

Tested by 2

PumpFunction · 0.68
WaitForMatchingQuestionFunction · 0.68