[freenet-cvs] r12599 - trunk/freenet/src/freenet/node/fcp
nextgens at freenetproject.org
nextgens at freenetproject.org
Thu Apr 12 12:53:45 UTC 2007
Author: nextgens
Date: 2007-04-12 12:53:45 +0000 (Thu, 12 Apr 2007)
New Revision: 12599
Added:
trunk/freenet/src/freenet/node/fcp/TestDDACompleteMessage.java
trunk/freenet/src/freenet/node/fcp/TestDDAReplyMessage.java
trunk/freenet/src/freenet/node/fcp/TestDDARequestMessage.java
trunk/freenet/src/freenet/node/fcp/TestDDAResponseMessage.java
Log:
Rename testDDAMessages to follow naming conventions
Copied: trunk/freenet/src/freenet/node/fcp/TestDDACompleteMessage.java (from rev 12589, trunk/freenet/src/freenet/node/fcp/testDDAComplete.java)
===================================================================
--- trunk/freenet/src/freenet/node/fcp/TestDDACompleteMessage.java (rev 0)
+++ trunk/freenet/src/freenet/node/fcp/TestDDACompleteMessage.java 2007-04-12 12:53:45 UTC (rev 12599)
@@ -0,0 +1,88 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+package freenet.node.fcp;
+
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+
+import freenet.node.Node;
+import freenet.node.fcp.FCPConnectionHandler.DDACheckJob;
+import freenet.support.Logger;
+import freenet.support.SimpleFieldSet;
+
+/**
+ * client -> node: DDARequest { WantRead=true, WantWrite=true, Dir=/tmp/blah }
+ * node -> client: DDAReply { Dir=/tmp/blah, ReadFilename=random1, WriteFilename=random2, ContentToWrite=random3 }
+ * client -> node: DDAResponse { Dir=/tmp/blah, ReadContent=blah }
+ * node -> client: DDAComplete { Dir=/tmp/blah, ReadAllowed=true, WriteAllowed=true }
+ *
+ * @author Florent Daignière <nextgens at freenetproject.org>
+ *
+ */
+public class TestDDACompleteMessage extends FCPMessage {
+ public static String NAME = "TestDDAComplete";
+ public static String READ_ALLOWED = "ReadAllowed";
+ public static String WRITE_ALLOWED = "WriteAllowed";
+
+ final DDACheckJob checkJob;
+ final String readContentFromClient;
+ private final FCPConnectionHandler handler;
+
+ public TestDDACompleteMessage(FCPConnectionHandler handler, DDACheckJob job, String readContent) {
+ this.checkJob = job;
+ this.readContentFromClient = readContent;
+ this.handler = handler;
+ }
+
+ public SimpleFieldSet getFieldSet() {
+ SimpleFieldSet sfs = new SimpleFieldSet(true);
+
+ sfs.putSingle(TestDDARequestMessage.DIRECTORY, checkJob.directory.toString());
+
+ boolean isReadAllowed = false;
+ boolean isWriteAllowed = false;
+
+ if(checkJob.readFilename != null) {
+ isReadAllowed = (readContentFromClient != null) && (checkJob.readContent.equals(readContentFromClient));
+ // cleanup in any case : we created it!... let's hope the client will do the same on its side.
+ checkJob.readFilename.delete();
+ sfs.putSingle(READ_ALLOWED, String.valueOf(isReadAllowed));
+ }
+
+ if(checkJob.writeFilename != null) {
+ File maybeWrittenFile = checkJob.writeFilename;
+ if (maybeWrittenFile.exists() && maybeWrittenFile.isFile() && maybeWrittenFile.canRead()) {
+ try {
+ FileReader fr = new FileReader(maybeWrittenFile);
+ StringBuffer sb = new StringBuffer();
+
+ int current = fr.read();
+ while(current != -1) {
+ sb.append((char)current);
+ current = fr.read();
+ }
+
+ fr.close();
+ isWriteAllowed = checkJob.writeContent.equals(sb.toString().trim());
+ } catch (IOException e) {
+ Logger.error(this, "Caught an IOE trying to read the file (" + maybeWrittenFile + ")! " + e.getMessage());
+ }
+ }
+ sfs.putSingle(WRITE_ALLOWED, String.valueOf(isWriteAllowed));
+ }
+
+ handler.registerTestDDAResult(checkJob.directory.toString(), isReadAllowed, isWriteAllowed);
+
+ return sfs;
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ 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", NAME, false);
+ }
+}
Copied: trunk/freenet/src/freenet/node/fcp/TestDDAReplyMessage.java (from rev 12589, trunk/freenet/src/freenet/node/fcp/TestDDAReply.java)
===================================================================
--- trunk/freenet/src/freenet/node/fcp/TestDDAReplyMessage.java (rev 0)
+++ trunk/freenet/src/freenet/node/fcp/TestDDAReplyMessage.java 2007-04-12 12:53:45 UTC (rev 12599)
@@ -0,0 +1,54 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+package freenet.node.fcp;
+
+import freenet.node.Node;
+import freenet.node.fcp.FCPConnectionHandler.DDACheckJob;
+import freenet.support.SimpleFieldSet;
+
+/**
+ * client -> node: DDARequest { WantRead=true, WantWrite=true, Dir=/tmp/blah }
+ * node -> client: DDAReply { Dir=/tmp/blah, ReadFilename=random1, WriteFilename=random2, ContentToWrite=random3 }
+ * client -> node: DDAResponse { Dir=/tmp/blah, ReadContent=blah }
+ * node -> client: DDAComplete { Dir=/tmp/blah, ReadAllowed=true, WriteAllowed=true }
+ *
+ * @author Florent Daignière <nextgens at freenetproject.org>
+ *
+ */
+public class TestDDAReplyMessage extends FCPMessage {
+ public static final String NAME = "TestDDAReply";
+ public static final String READ_FILENAME = "ReadFilename";
+ public static final String WRITE_FILENAME = "WriteFilename";
+ public static final String CONTENT_TO_WRITE = "ContentToWrite";
+
+ final DDACheckJob checkJob;
+
+ TestDDAReplyMessage(DDACheckJob job) {
+ this.checkJob = job;
+ }
+
+ public SimpleFieldSet getFieldSet() {
+ SimpleFieldSet sfs = new SimpleFieldSet(true);
+ sfs.putSingle(TestDDARequestMessage.DIRECTORY, checkJob.directory.toString());
+
+ if(checkJob.readFilename != null) {
+ sfs.putSingle(READ_FILENAME, checkJob.readFilename.toString());
+ }
+
+ if(checkJob.writeFilename != null) {
+ sfs.putSingle(WRITE_FILENAME, checkJob.writeFilename.toString());
+ sfs.putSingle(CONTENT_TO_WRITE, checkJob.writeContent);
+ }
+
+ return sfs;
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ 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", NAME, false);
+ }
+}
Copied: trunk/freenet/src/freenet/node/fcp/TestDDARequestMessage.java (from rev 12589, trunk/freenet/src/freenet/node/fcp/TestDDARequest.java)
===================================================================
--- trunk/freenet/src/freenet/node/fcp/TestDDARequestMessage.java (rev 0)
+++ trunk/freenet/src/freenet/node/fcp/TestDDARequestMessage.java 2007-04-12 12:53:45 UTC (rev 12599)
@@ -0,0 +1,62 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+package freenet.node.fcp;
+
+import freenet.node.Node;
+import freenet.node.fcp.FCPConnectionHandler.DDACheckJob;
+import freenet.support.SimpleFieldSet;
+
+/**
+ * client -> node: DDARequest { WantRead=true, WantWrite=true, Dir=/tmp/blah }
+ * node -> client: DDAReply { Dir=/tmp/blah, ReadFilename=random1, WriteFilename=random2, ContentToWrite=random3 }
+ * client -> node: DDAResponse { Dir=/tmp/blah, ReadContent=blah }
+ * node -> client: DDAComplete { Dir=/tmp/blah, ReadAllowed=true, WriteAllowed=true }
+ *
+ * @author Florent Daignière <nextgens at freenetproject.org>
+ */
+public class TestDDARequestMessage extends FCPMessage {
+ public static final String NAME = "TestDDARequest";
+ public static final String DIRECTORY = "Directory";
+ public static final String WANT_READ = "WantRead";
+ public static final String WANT_WRITE = "WantWrite";
+
+ final String identifier;
+ final boolean wantRead, wantWrite;
+
+
+ /**
+ * @throws MessageInvalidException
+ */
+ public TestDDARequestMessage(SimpleFieldSet fs) throws MessageInvalidException {
+ identifier = fs.get(DIRECTORY);
+ if(identifier == null)
+ throw new MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "No Directory given!", null, false);
+ if(identifier.length() == 0)
+ throw new MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "The specified Directory can't be empty!", null, false);
+
+ wantRead = fs.getBoolean(WANT_READ, false);
+ wantWrite = fs.getBoolean(WANT_WRITE, false);
+ if((wantRead == false) && (wantWrite == false))
+ throw new MessageInvalidException(ProtocolErrorMessage.INVALID_MESSAGE, "Both "+ WANT_READ + " and " + WANT_WRITE + " are set to false: what's the point of sending a message?", identifier, false);
+ }
+
+ public SimpleFieldSet getFieldSet() {
+ return null;
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ public void run(FCPConnectionHandler handler, Node node) throws MessageInvalidException {
+ DDACheckJob job;
+ try {
+ job = handler.enqueueDDACheck(identifier, wantRead, wantWrite);
+ } catch (IllegalArgumentException e) {
+ throw new MessageInvalidException(ProtocolErrorMessage.INVALID_FIELD, e.getMessage(), identifier, false);
+ }
+ TestDDAReplyMessage reply = new TestDDAReplyMessage(job);
+ handler.outputHandler.queue(reply);
+ }
+}
Copied: trunk/freenet/src/freenet/node/fcp/TestDDAResponseMessage.java (from rev 12589, trunk/freenet/src/freenet/node/fcp/TestDDAResponse.java)
===================================================================
--- trunk/freenet/src/freenet/node/fcp/TestDDAResponseMessage.java (rev 0)
+++ trunk/freenet/src/freenet/node/fcp/TestDDAResponseMessage.java 2007-04-12 12:53:45 UTC (rev 12599)
@@ -0,0 +1,59 @@
+/* This code is part of Freenet. It is distributed under the GNU General
+ * Public License, version 2 (or at your option any later version). See
+ * http://www.gnu.org/ for further details of the GPL. */
+package freenet.node.fcp;
+
+import freenet.node.Node;
+import freenet.node.fcp.FCPConnectionHandler.DDACheckJob;
+import freenet.support.SimpleFieldSet;
+
+/**
+ * client -> node: DDARequest { WantRead=true, WantWrite=true, Dir=/tmp/blah }
+ * node -> client: DDAReply { Dir=/tmp/blah, ReadFilename=random1, WriteFilename=random2, ContentToWrite=random3 }
+ * client -> node: DDAResponse { Dir=/tmp/blah, ReadContent=blah }
+ * node -> client: DDAComplete { Dir=/tmp/blah, ReadAllowed=true, WriteAllowed=true }
+ *
+ * @author Florent Daignière <nextgens at freenetproject.org>
+ *
+ */
+public class TestDDAResponseMessage extends FCPMessage {
+ public static final String NAME = "TestDDAResponse";
+ public static final String READ_CONTENT = "ReadContent";
+
+ final String identifier;
+ final String readContent;
+
+ public TestDDAResponseMessage(SimpleFieldSet sfs) throws MessageInvalidException {
+ identifier = sfs.get(TestDDARequestMessage.DIRECTORY);
+ if(identifier == null)
+ throw new MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "No Directory given!", null, false);
+ if(identifier.length() == 0)
+ throw new MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "The specified Directory can't be empty!", null, false);
+
+ readContent = sfs.get(READ_CONTENT);
+ }
+
+ public SimpleFieldSet getFieldSet() {
+ return null;
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ public void run(FCPConnectionHandler handler, Node node) throws MessageInvalidException {
+ DDACheckJob job;
+ try {
+ job = handler.popDDACheck(identifier);
+ } catch (IllegalArgumentException e) {
+ throw new MessageInvalidException(ProtocolErrorMessage.INVALID_FIELD, e.getMessage(), identifier, false);
+ }
+ if(job == null)
+ throw new MessageInvalidException(ProtocolErrorMessage.INVALID_MESSAGE, "The node doesn't know that testDDA identifier! double check it! (" + identifier + ").", identifier, false);
+ else if((job.readFilename != null) && (readContent == null))
+ throw new MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "You need to send " + READ_CONTENT + " back to the node if you specify " + TestDDARequestMessage.WANT_READ + " in " + TestDDARequestMessage.NAME + '.', identifier, false);
+
+ TestDDACompleteMessage reply = new TestDDACompleteMessage(handler, job, readContent);
+ handler.outputHandler.queue(reply);
+ }
+}
More information about the cvs
mailing list