Author: nextgens
Date: 2007-04-12 13:39:35 +0000 (Thu, 12 Apr 2007)
New Revision: 12601
Added:
trunk/freenet/src/freenet/node/fcp/TestFileAccessQueryMessage.java
trunk/freenet/src/freenet/node/fcp/TestFileAccessReplyMessage.java
Modified:
trunk/freenet/src/freenet/node/fcp/FCPMessage.java
Log:
Add a new FCP message : TestFileAccessQuery
Modified: trunk/freenet/src/freenet/node/fcp/FCPMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPMessage.java 2007-04-12 13:10:26 UTC
(rev 12600)
+++ trunk/freenet/src/freenet/node/fcp/FCPMessage.java 2007-04-12 13:39:35 UTC
(rev 12601)
@@ -81,6 +81,8 @@
return new TestDDARequestMessage(fs);
if(name.equals(TestDDAResponseMessage.name))
return new TestDDAResponseMessage(fs);
+ if(name.equals(TestFileAccessQueryMessage.name))
+ return new TestFileAccessQueryMessage(fs);
if(name.equals(WatchGlobal.name))
return new WatchGlobal(fs);
if(name.equals("Void"))
Added: trunk/freenet/src/freenet/node/fcp/TestFileAccessQueryMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/TestFileAccessQueryMessage.java
(rev 0)
+++ trunk/freenet/src/freenet/node/fcp/TestFileAccessQueryMessage.java
2007-04-12 13:39:35 UTC (rev 12601)
@@ -0,0 +1,47 @@
+/* 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 freenet.node.Node;
+import freenet.support.SimpleFieldSet;
+
+/**
+ * Tell the client what access the node has to a specific file
+ *
+ * @author Florent Daignière <nextgens at freenetproject.org>
+ *
+ */
+public class TestFileAccessQueryMessage extends FCPMessage {
+ public static final String name = "TestFileAccessQuery";
+ public static final String FILENAME = "Filename";
+
+ private final String filename;
+
+ public TestFileAccessQueryMessage(SimpleFieldSet sfs) throws
MessageInvalidException {
+ filename = sfs.get(FILENAME);
+ if(filename == null)
+ throw new
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "No Directory
given!", null, false);
+ if(filename.length() < 1)
+ throw new
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "The specified " +
FILENAME + " can't be empty!", null, false);
+ }
+
+ public SimpleFieldSet getFieldSet() {
+ return null;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void run(FCPConnectionHandler handler, Node node) throws
MessageInvalidException {
+ File file = new File(filename);
+ if(!file.exists())
+ throw new
MessageInvalidException(ProtocolErrorMessage.INVALID_FIELD, "The node isn't
aware that \"" + filename + "\" exists!", filename, false);
+ TestFileAccessReplyMessage reply = new
TestFileAccessReplyMessage(file);
+ handler.outputHandler.queue(reply);
+ }
+
+}
Added: trunk/freenet/src/freenet/node/fcp/TestFileAccessReplyMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/TestFileAccessReplyMessage.java
(rev 0)
+++ trunk/freenet/src/freenet/node/fcp/TestFileAccessReplyMessage.java
2007-04-12 13:39:35 UTC (rev 12601)
@@ -0,0 +1,46 @@
+package freenet.node.fcp;
+
+import java.io.File;
+
+import freenet.node.Node;
+import freenet.support.SimpleFieldSet;
+import freenet.support.io.FileUtil;
+
+/**
+ * Tell the client what access the node has to a specific file
+ *
+ * @author Florent Daignière <nextgens at freenetproject.org>
+ * @see TestFileAccessQueryMessage
+ */
+public class TestFileAccessReplyMessage extends FCPMessage {
+ public static final String name = "TestFileAccessReply";
+ public static final String CAN_READ = "CanRead";
+ public static final String CAN_WRITE = "CanWrite";
+ public static final String CAN_EXEC = "CanExecute";
+
+ private final File file;
+
+ public TestFileAccessReplyMessage(File filename) {
+ this.file = FileUtil.getCanonicalFile(filename);
+ }
+
+ public SimpleFieldSet getFieldSet() {
+ SimpleFieldSet sfs = new SimpleFieldSet(true);
+
+ sfs.putSingle(TestFileAccessQueryMessage.FILENAME,
file.toString());
+ sfs.putSingle(CAN_READ, String.valueOf(file.canRead()));
+ sfs.putSingle(CAN_WRITE, String.valueOf(file.canWrite()));
+ sfs.putSingle(CAN_EXEC, String.valueOf(file.canExecute()));
+
+ 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);
+ }
+
+}