private void initiateQuery(long bssid) { LinkedList<QuerySet> queryEntries = mBssQueues.get(bssid); if (queryEntries == null) { return; } else if (queryEntries.isEmpty()) { mBssQueues.remove(bssid); return; } QuerySet querySet = queryEntries.getFirst(); QueryEntry queryEntry = querySet.peek(); if (queryEntry.bumpRetry() >= RetryCount) { QueryEntry newEntry = querySet.pop(); if (newEntry == null) { // No more entries in this QuerySet, advance to the next set. querySet.getOsuInfo().setIconStatus(OSUInfo.IconStatus.NotAvailable); queryEntries.removeFirst(); if (queryEntries.isEmpty()) { // No further QuerySet on this BSSID, drop the bucket and bail. mBssQueues.remove(bssid); return; } else { querySet = queryEntries.getFirst(); queryEntry = querySet.peek(); queryEntry.bumpRetry(); } } } mOSUManager.doIconQuery(bssid, queryEntry.getKey().getFileName()); }
private IconKey updateIcon(String fileName, HSIconFileElement iconFileElement) { IconKey key = null; for (QueryEntry queryEntry : mEntries) { if (queryEntry.getKey().getFileName().equals(fileName)) { key = queryEntry.getKey(); } } if (key == null) { return null; } if (iconFileElement != null) { mOsuInfo.setIconFileElement(iconFileElement, fileName); } else { mOsuInfo.setIconStatus(OSUInfo.IconStatus.NotAvailable); } return key; }
public void startIconQuery(OSUInfo osuInfo, List<IconInfo> icons) { Log.d("ZXZ", String.format("Icon query on %012x for %s", osuInfo.getBSSID(), icons)); if (icons == null || icons.isEmpty()) { return; } QuerySet querySet = new QuerySet(osuInfo, icons); for (QueryEntry entry : querySet.getAllEntries()) { HSIconFileElement iconElement = mCache.get(entry.getKey()); if (iconElement != null) { osuInfo.setIconFileElement(iconElement, entry.getKey().getFileName()); mOSUManager.iconResults(Arrays.asList(osuInfo)); return; } } if (enqueue(querySet)) { initiateQuery(querySet.getBssid()); } }
private boolean updateIcon(IconKey key, HSIconFileElement iconFileElement) { boolean match = false; for (QueryEntry queryEntry : mEntries) { if (queryEntry.getKey().equals(key)) { match = true; break; } } if (!match) { return false; } if (iconFileElement != null) { mOsuInfo.setIconFileElement(iconFileElement, key.getFileName()); } else { mOsuInfo.setIconStatus(OSUInfo.IconStatus.NotAvailable); } return true; }