1// Copyright 2003-2005 Arthur van Hoff, Rick Blair 2// Licensed under Apache License version 2.0 3// Original license LGPL 4 5package javax.jmdns.impl.tasks; 6 7import java.util.Timer; 8import java.util.logging.Level; 9import java.util.logging.Logger; 10 11import javax.jmdns.impl.JmDNSImpl; 12import javax.jmdns.impl.constants.DNSConstants; 13 14/** 15 * Periodically removes expired entries from the cache. 16 */ 17public class RecordReaper extends DNSTask { 18 static Logger logger = Logger.getLogger(RecordReaper.class.getName()); 19 20 /** 21 * @param jmDNSImpl 22 */ 23 public RecordReaper(JmDNSImpl jmDNSImpl) { 24 super(jmDNSImpl); 25 } 26 27 /* 28 * (non-Javadoc) 29 * @see javax.jmdns.impl.tasks.DNSTask#getName() 30 */ 31 @Override 32 public String getName() { 33 return "RecordReaper(" + (this.getDns() != null ? this.getDns().getName() : "") + ")"; 34 } 35 36 /* 37 * (non-Javadoc) 38 * @see javax.jmdns.impl.tasks.DNSTask#start(java.util.Timer) 39 */ 40 @Override 41 public void start(Timer timer) { 42 if (!this.getDns().isCanceling() && !this.getDns().isCanceled()) { 43 timer.schedule(this, DNSConstants.RECORD_REAPER_INTERVAL, DNSConstants.RECORD_REAPER_INTERVAL); 44 } 45 } 46 47 @Override 48 public void run() { 49 if (this.getDns().isCanceling() || this.getDns().isCanceled()) { 50 return; 51 } 52 if (logger.isLoggable(Level.FINEST)) { 53 logger.finest(this.getName() + ".run() JmDNS reaping cache"); 54 } 55 56 // Remove expired answers from the cache 57 // ------------------------------------- 58 this.getDns().cleanCache(); 59 } 60 61}