package freenet.clients.fcp; import freenet.client.InsertContext; import freenet.client.async.CompatibilityAnalyser; import freenet.node.Node; import freenet.support.HexUtil; import freenet.support.SimpleFieldSet; public class CompatibilityMode extends FCPMessage { public CompatibilityMode(String identifier, boolean global, CompatibilityAnalyser compat) { this.identifier = identifier; this.global = global; this.compat = compat; } private static final long serialVersionUID = 1L; private final CompatibilityAnalyser compat; final String identifier; final boolean global; @Override public SimpleFieldSet getFieldSet() { SimpleFieldSet fs = new SimpleFieldSet(false); fs.putOverwrite("Min", compat.min().name()); fs.putOverwrite("Max", compat.max().name()); fs.put("Min.Number", compat.min().ordinal()); fs.put("Max.Number", compat.max().ordinal()); fs.putOverwrite("Identifier", identifier); fs.put("Global", global); byte[] cryptoKey = compat.getCryptoKey(); if(cryptoKey != null) fs.putOverwrite("SplitfileCryptoKey", HexUtil.bytesToHex(cryptoKey)); fs.put("DontCompress", compat.dontCompress()); fs.put("Definitive", compat.definitive()); return fs; } @Override public String getName() { return "CompatibilityMode"; } @Override public void run(FCPConnectionHandler handler, Node node) throws MessageInvalidException { throw new UnsupportedOperationException(); } public InsertContext.CompatibilityMode[] getModes() { return compat.getModes(); } }