@Override public synchronized void put(Question q, DNSMessage message) { if (message.getReceiveTimestamp() <= 0l) { return; } backend.put(q, message); }
@Override public synchronized DNSMessage get(Question q) { DNSMessage message = backend.get(q); if (message == null) { missCount++; return null; } long ttl = maxTTL; for (Record r : message.getAnswers()) { ttl = Math.min(ttl, r.ttl); } for (Record r : message.getAdditionalResourceRecords()) { ttl = Math.min(ttl, r.ttl); } if (message.getReceiveTimestamp() + ttl > System.currentTimeMillis()) { missCount++; expireCount++; backend.remove(q); return null; } else { hitCount++; return message; } }