package net.i2p.router.tasks;
/*
* free (adj.): unencumbered; not under the control of others
* Written by jrandom in 2003 and released into the public domain
* with no warranty of any kind, either expressed or implied.
* It probably won't make your computer catch on fire, or eat
* your children, but it might. Use at your own risk.
*
*/
import net.i2p.data.router.RouterKeyGenerator;
import net.i2p.router.JobImpl;
import net.i2p.router.RouterContext;
import net.i2p.util.Log;
/**
* Update the routing Key modifier every day at midnight (plus on startup).
* This is done here because we want to make sure the key is updated before anyone
* uses it.
*
* @since 0.8.12 moved from Router.java
*/
public class UpdateRoutingKeyModifierJob extends JobImpl {
private final Log _log;
// Run every 15 minutes in case of time zone change, clock skew, etc.
private static final long MAX_DELAY_FAILSAFE = 15*60*1000;
public UpdateRoutingKeyModifierJob(RouterContext ctx) {
super(ctx);
_log = ctx.logManager().getLog(getClass());
}
public String getName() { return "Update Routing Key Modifier"; }
public void runJob() {
RouterKeyGenerator gen = getContext().routerKeyGenerator();
// make sure we requeue quickly if just before midnight
long delay = Math.max(5, Math.min(MAX_DELAY_FAILSAFE, gen.getTimeTillMidnight()));
// TODO tell netdb if mod data changed?
gen.generateDateBasedModData();
requeue(delay);
}
}