package net.i2p.data;
/*
* 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.I2PAppContext;
/**
* Component to manage the munging of hashes into routing keys - given a hash,
* perform some consistent transformation against it and return the result.
* This transformation is fed by the current "mod data".
*
* As of 0.9.16, this is essentially just an interface.
* Implementation moved to net.i2p.data.router.RouterKeyGenerator.
* No generator is available in I2PAppContext; you must be in RouterContext.
*
*/
public abstract class RoutingKeyGenerator {
/**
* Get the generator for this context.
*
* @return null in I2PAppContext; non-null in RouterContext.
*/
public static RoutingKeyGenerator getInstance() {
return I2PAppContext.getGlobalContext().routingKeyGenerator();
}
/**
* The version of the current (today's) mod data.
* Use to determine if the routing key should be regenerated.
*/
public abstract long getLastChanged();
/**
* Get the routing key for a key.
*
* @throws IllegalArgumentException if origKey is null
*/
public abstract Hash getRoutingKey(Hash origKey);
}