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&egrave;re &lt;nextgens at freenetproject.org&gt;
+ * @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);
+       }
+
+}


Reply via email to