X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Ffreenet%2Ffcp%2FCommand.java;h=46032ddd2fa8e3a9d8f7e2814f0848d36258ef50;hb=45208b1b2ce354f252ef5278bf165395c806c765;hp=faa10db7316f877e53478c3917097266476e6af3;hpb=6a426e5c3a82f3e63a8763d2a5ad57f311bc6065;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/freenet/fcp/Command.java b/src/main/java/net/pterodactylus/sone/freenet/fcp/Command.java index faa10db..46032dd 100644 --- a/src/main/java/net/pterodactylus/sone/freenet/fcp/Command.java +++ b/src/main/java/net/pterodactylus/sone/freenet/fcp/Command.java @@ -17,6 +17,7 @@ package net.pterodactylus.sone.freenet.fcp; +import net.pterodactylus.sone.freenet.SimpleFieldSetBuilder; import freenet.support.SimpleFieldSet; import freenet.support.api.Bucket; @@ -69,6 +70,9 @@ public interface Command { */ public static class Response { + /** The message name of the reponse. */ + private final String messageName; + /** The reply parameters. */ private final SimpleFieldSet replyParameters; @@ -81,40 +85,48 @@ public interface Command { /** * Creates a new reply with the given parameters. * + * @param messageName + * The message name * @param replyParameters * The reply parameters */ - public Response(SimpleFieldSet replyParameters) { - this(replyParameters, null, null); + public Response(String messageName, SimpleFieldSet replyParameters) { + this(messageName, replyParameters, null, null); } /** * Creates a new reply with the given parameters. * + * @param messageName + * The message name * @param replyParameters * The reply parameters * @param data * The data of the reply (may be {@code null}) */ - public Response(SimpleFieldSet replyParameters, byte[] data) { - this(replyParameters, data, null); + public Response(String messageName, SimpleFieldSet replyParameters, byte[] data) { + this(messageName, replyParameters, data, null); } /** * Creates a new reply with the given parameters. * + * @param messageName + * The message name * @param replyParameters * The reply parameters * @param bucket * The bucket of the reply (may be {@code null}) */ - public Response(SimpleFieldSet replyParameters, Bucket bucket) { - this(replyParameters, null, bucket); + public Response(String messageName, SimpleFieldSet replyParameters, Bucket bucket) { + this(messageName, replyParameters, null, bucket); } /** * Creates a new reply with the given parameters. * + * @param messageName + * The message name * @param replyParameters * The reply parameters * @param data @@ -122,7 +134,8 @@ public interface Command { * @param bucket * The bucket of the reply (may be {@code null}) */ - private Response(SimpleFieldSet replyParameters, byte[] data, Bucket bucket) { + private Response(String messageName, SimpleFieldSet replyParameters, byte[] data, Bucket bucket) { + this.messageName = messageName; this.replyParameters = replyParameters; this.data = data; this.bucket = bucket; @@ -134,7 +147,7 @@ public interface Command { * @return The reply parameters */ public SimpleFieldSet getReplyParameters() { - return replyParameters; + return new SimpleFieldSetBuilder(replyParameters).put("Message", messageName).get(); } /** @@ -178,4 +191,36 @@ public interface Command { } + /** + * Response implementation that can return an error message and an optional + * error code. + * + * @author David ‘Bombe’ Roden + */ + public class ErrorResponse extends Response { + + /** + * Creates a new error response with the given message. + * + * @param message + * The error message + */ + public ErrorResponse(String message) { + super("Error", new SimpleFieldSetBuilder().put("ErrorMessage", message).get()); + } + + /** + * Creates a new error response with the given code and message. + * + * @param code + * The error code + * @param message + * The error message + */ + public ErrorResponse(int code, String message) { + super("Error", new SimpleFieldSetBuilder().put("ErrorMessage", message).put("ErrorCode", code).get()); + } + + } + }