13742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman// Copyright 2003-2005 Arthur van Hoff, Rick Blair 23742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman// Licensed under Apache License version 2.0 33742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman// Original license LGPL 43742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 53742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpackage javax.jmdns.impl.tasks; 63742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 73742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport java.util.Timer; 83742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport java.util.logging.Level; 93742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport java.util.logging.Logger; 103742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 113742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport javax.jmdns.impl.JmDNSImpl; 123742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanimport javax.jmdns.impl.constants.DNSConstants; 133742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 143742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman/** 153742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * Periodically removes expired entries from the cache. 163742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */ 173742d9db8b6edb10627b0f89336cca5249f1d15aManuel Romanpublic class RecordReaper extends DNSTask { 183742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman static Logger logger = Logger.getLogger(RecordReaper.class.getName()); 193742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 203742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman /** 213742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * @param jmDNSImpl 223742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */ 233742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman public RecordReaper(JmDNSImpl jmDNSImpl) { 243742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman super(jmDNSImpl); 253742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman } 263742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 273742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman /* 283742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * (non-Javadoc) 293742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * @see javax.jmdns.impl.tasks.DNSTask#getName() 303742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */ 313742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman @Override 323742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman public String getName() { 333742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman return "RecordReaper(" + (this.getDns() != null ? this.getDns().getName() : "") + ")"; 343742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman } 353742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 363742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman /* 373742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * (non-Javadoc) 383742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman * @see javax.jmdns.impl.tasks.DNSTask#start(java.util.Timer) 393742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman */ 403742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman @Override 413742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman public void start(Timer timer) { 423742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman if (!this.getDns().isCanceling() && !this.getDns().isCanceled()) { 433742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman timer.schedule(this, DNSConstants.RECORD_REAPER_INTERVAL, DNSConstants.RECORD_REAPER_INTERVAL); 443742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman } 453742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman } 463742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 473742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman @Override 483742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman public void run() { 493742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman if (this.getDns().isCanceling() || this.getDns().isCanceled()) { 503742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman return; 513742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman } 523742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman if (logger.isLoggable(Level.FINEST)) { 533742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman logger.finest(this.getName() + ".run() JmDNS reaping cache"); 543742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman } 553742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 563742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman // Remove expired answers from the cache 573742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman // ------------------------------------- 583742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman this.getDns().cleanCache(); 593742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman } 603742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman 613742d9db8b6edb10627b0f89336cca5249f1d15aManuel Roman}