CZeroconfBrowserOSX::~CZeroconfBrowserOSX() { CSingleLock lock(m_data_guard); //make sure there are no browsers anymore for(tBrowserMap::iterator it = m_service_browsers.begin(); it != m_service_browsers.end(); ++it ) doRemoveServiceType(it->first); }
bool CZeroconfBrowser::RemoveServiceType(const CStdString& fcr_service_type) { CSingleLock lock(*mp_crit_sec); tServices::iterator ret = m_services.find(fcr_service_type); if(ret == m_services.end()) return false; if(m_started) return doRemoveServiceType(fcr_service_type); //not yet started, so its just queued return true; }
CZeroconfBrowserWIN::~CZeroconfBrowserWIN() { CSingleLock lock(m_data_guard); //make sure there are no browsers anymore for(tBrowserMap::iterator it = m_service_browsers.begin(); it != m_service_browsers.end(); ++it ) doRemoveServiceType(it->first); WSAAsyncSelect( (SOCKET) DNSServiceRefSockFD( m_browser ), g_hWnd, BONJOUR_BROWSER_EVENT, 0 ); DNSServiceRefDeallocate(m_browser); m_browser = NULL; }
CZeroconfBrowserMDNS::~CZeroconfBrowserMDNS() { CSingleLock lock(m_data_guard); //make sure there are no browsers anymore for(tBrowserMap::iterator it = m_service_browsers.begin(); it != m_service_browsers.end(); ++it ) doRemoveServiceType(it->first); if (m_browser) DNSServiceRefDeallocate(m_browser); m_browser = NULL; }
CZeroconfBrowserMDNS::~CZeroconfBrowserMDNS() { CSingleLock lock(m_data_guard); //make sure there are no browsers anymore for(tBrowserMap::iterator it = m_service_browsers.begin(); it != m_service_browsers.end(); ++it ) doRemoveServiceType(it->first); #if defined(TARGET_WINDOWS_DESKTOP) WSAAsyncSelect( (SOCKET) DNSServiceRefSockFD( m_browser ), g_hWnd, BONJOUR_BROWSER_EVENT, 0 ); #elif defined(TARGET_WINDOWS_STORE) // need to modify this code to use WSAEventSelect since WSAAsyncSelect is not supported CLog::Log(LOGDEBUG, "%s is not implemented for TARGET_WINDOWS_STORE", __FUNCTION__); #endif //TARGET_WINDOWS if (m_browser) DNSServiceRefDeallocate(m_browser); m_browser = NULL; }