/** * \fn UPNPScanner::GetInitialMetadata * Fill the given metadata_list and meta_dir_node with the root media * server metadata (i.e. the MediaServers) and any additional metadata that * that has already been scanned and cached. */ void UPNPScanner::GetInitialMetadata(VideoMetadataListManager::metadata_list* list, meta_dir_node *node) { // nothing to see.. QMap<QString,QString> servers = ServerList(); if (servers.isEmpty()) return; // Add MediaServers LOG(VB_GENERAL, LOG_INFO, QString("Adding MediaServer metadata.")); smart_dir_node mediaservers = node->addSubDir(tr("Media Servers")); mediaservers->setPathRoot(); m_lock.lock(); QMutableHashIterator<QString,MediaServer*> it(m_servers); while (it.hasNext()) { it.next(); if (!it.value()->m_subscribed) continue; QString usn = it.key(); GetServerContent(usn, it.value(), list, mediaservers.get()); } m_lock.unlock(); }
/** * \fn UPNPScanner::GetMetadata * Fill the given metadata_list and meta_dir_node with the metadata * of content retrieved from known media servers. */ void UPNPScanner::GetMetadata(VideoMetadataListManager::metadata_list* list, meta_dir_node *node) { // nothing to see.. QMap<QString,QString> servers = ServerList(); if (servers.isEmpty()) return; // Start scanning if it isn't already running StartFullScan(); // wait for the scanner to complete - with a 30 second timeout LOG(VB_GENERAL, LOG_INFO, LOC + "Waiting for scan to complete."); int count = 0; while (!m_scanComplete && (count++ < 300)) usleep(100000); // some scans may just take too long (PlayOn) if (!m_scanComplete) LOG(VB_GENERAL, LOG_ERR, LOC + "MediaServer scan is incomplete."); else LOG(VB_GENERAL, LOG_INFO, LOC + "MediaServer scanning finished."); smart_dir_node mediaservers = node->addSubDir(tr("Media Servers")); m_lock.lock(); QMutableHashIterator<QString,MediaServer*> it(m_servers); while (it.hasNext()) { it.next(); GetServerContent(it.value(), list, mediaservers.get()); } m_lock.unlock(); }