forked from I2P_Developers/i2p.i2p
2005-10-17 jrandom
* Allow an env prop to configure whether we want to use the backwards
compatible (but not standards compliant) HMAC-MD5, or whether we want
to use the not-backwards compatible (but standards compliant) one. No
one should touch this setting, unless your name is toad or jrandom ;)
* Added some new dummy facades
* Be more aggressive on loading up the router.config before building the
router context
* Added new hooks for apps to deal with previously undefined I2NP message
types without having to modify any code.
* Demo code for using a castrated router for SSU comm (SSUDemo.java)
This commit is contained in:
@@ -12,6 +12,9 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import net.i2p.I2PAppContext;
|
||||
import net.i2p.data.DataFormatException;
|
||||
import net.i2p.data.DataHelper;
|
||||
@@ -36,6 +39,15 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM
|
||||
|
||||
private static final boolean RAW_FULL_SIZE = false;
|
||||
|
||||
/** unsynchronized as its pretty much read only (except at startup) */
|
||||
private static final Map _builders = new HashMap(8);
|
||||
public static final void registerBuilder(Builder builder, int type) { _builders.put(new Integer(type), builder); }
|
||||
/** interface for extending the types of messages handled */
|
||||
public interface Builder {
|
||||
/** instantiate a new I2NPMessage to be populated shortly */
|
||||
public I2NPMessage build(I2PAppContext ctx);
|
||||
}
|
||||
|
||||
public I2NPMessageImpl(I2PAppContext context) {
|
||||
_context = context;
|
||||
_log = context.logManager().getLog(I2NPMessageImpl.class);
|
||||
@@ -334,7 +346,11 @@ public abstract class I2NPMessageImpl extends DataStructureImpl implements I2NPM
|
||||
case TunnelCreateStatusMessage.MESSAGE_TYPE:
|
||||
return new TunnelCreateStatusMessage(context);
|
||||
default:
|
||||
return null;
|
||||
Builder builder = (Builder)_builders.get(new Integer(type));
|
||||
if (builder == null)
|
||||
return null;
|
||||
else
|
||||
return builder.build(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user