package freenet.clients.fcp; import java.io.Serializable; import freenet.client.events.ExpectedHashesEvent; import freenet.crypt.HashResult; import freenet.node.Node; import freenet.support.Logger; import freenet.support.SimpleFieldSet; public class ExpectedHashes extends FCPMessage implements Serializable { private static final long serialVersionUID = 1L; final HashResult[] hashes; final String identifier; final boolean global; public ExpectedHashes(ExpectedHashesEvent event, String identifier, boolean global) { this.identifier = identifier; this.global = global; this.hashes = event.hashes; } ExpectedHashes(HashResult[] hashes, String identifier, boolean global) { this.identifier = identifier; this.global = global; this.hashes = hashes; } protected ExpectedHashes() { // For serialization. hashes = null; identifier = null; global = false; } @Override public SimpleFieldSet getFieldSet() { if(hashes == null) { Logger.error(this, "Hashes == null, possibly persistence issue caused prior to build 1411 on "+this); return null; } SimpleFieldSet fs = new SimpleFieldSet(false); SimpleFieldSet values = new SimpleFieldSet(false); for(HashResult hash : hashes) { if(hash == null) { Logger.error(this, "Hash == null, possibly persistence issue caused prior to build 1411 on "+this); return null; } values.putOverwrite(hash.type.name(), hash.hashAsHex()); } fs.put("Hashes", values); fs.putOverwrite("Identifier", identifier); fs.put("Global", global); return fs; } @Override public String getName() { return "ExpectedHashes"; } @Override public void run(FCPConnectionHandler handler, Node node) throws MessageInvalidException { throw new UnsupportedOperationException(); } }