package freenet.clients.fcp; import freenet.node.Node; import freenet.support.SimpleFieldSet; import freenet.support.api.Bucket; /** * Carries the result of a content filter test back to the client. */ public class FilterResultMessage extends DataCarryingMessage { public static final String NAME = "FilterResult"; private final String identifier; private final String charset; private final String mimeType; private final boolean unsafeContentType; private final long dataLength; public FilterResultMessage(String identifier, String charset, String mimeType, boolean unsafeContentType, Bucket bucket) { this.identifier = identifier; this.charset = charset; this.mimeType = mimeType; this.unsafeContentType = unsafeContentType; if (unsafeContentType) { this.dataLength = -1; } else { this.dataLength = bucket.size(); this.bucket = bucket; } } @Override String getIdentifier() { return identifier; } @Override boolean isGlobal() { return false; } @Override long dataLength() { return dataLength; } @Override public SimpleFieldSet getFieldSet() { SimpleFieldSet fs = new SimpleFieldSet(true); fs.putSingle(IDENTIFIER, identifier); fs.putOverwrite("Charset", charset); fs.putOverwrite("MimeType", mimeType); fs.put("UnsafeContentType", unsafeContentType); fs.put("DataLength", dataLength); return fs; } @Override public String getName() { return NAME; } @Override public void run(FCPConnectionHandler handler, Node node) throws MessageInvalidException { throw new MessageInvalidException(ProtocolErrorMessage.INVALID_MESSAGE, NAME + " goes from server to client not the other way around", null, false); } }