Author: toad
Date: 2006-03-25 22:43:18 +0000 (Sat, 25 Mar 2006)
New Revision: 8321
Added:
trunk/freenet/src/freenet/node/fcp/SubscribeUSK.java
trunk/freenet/src/freenet/node/fcp/SubscribeUSKMessage.java
trunk/freenet/src/freenet/node/fcp/SubscribedUSKUpdate.java
Log:
Add missing files.
Added: trunk/freenet/src/freenet/node/fcp/SubscribeUSK.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/SubscribeUSK.java 2006-03-25
21:04:34 UTC (rev 8320)
+++ trunk/freenet/src/freenet/node/fcp/SubscribeUSK.java 2006-03-25
22:43:18 UTC (rev 8321)
@@ -0,0 +1,31 @@
+package freenet.node.fcp;
+
+import freenet.client.async.USKCallback;
+import freenet.keys.USK;
+import freenet.node.Node;
+
+public class SubscribeUSK implements USKCallback {
+
+ final FCPConnectionHandler handler;
+ final String identifier;
+ final Node node;
+ final boolean dontPoll;
+
+ public SubscribeUSK(SubscribeUSKMessage message, Node node,
FCPConnectionHandler handler) {
+ this.handler = handler;
+ this.dontPoll = message.dontPoll;
+ this.identifier = message.identifier;
+ this.node = node;
+ node.uskManager.subscribe(message.key, this, !message.dontPoll);
+ }
+
+ public void onFoundEdition(long l, USK key) {
+ if(handler.isClosed()) {
+ node.uskManager.unsubscribe(key, this, !dontPoll);
+ return;
+ }
+ FCPMessage msg = new SubscribedUSKUpdate(identifier, l, key);
+ handler.outputHandler.queue(msg);
+ }
+
+}
Added: trunk/freenet/src/freenet/node/fcp/SubscribeUSKMessage.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/SubscribeUSKMessage.java 2006-03-25
21:04:34 UTC (rev 8320)
+++ trunk/freenet/src/freenet/node/fcp/SubscribeUSKMessage.java 2006-03-25
22:43:18 UTC (rev 8321)
@@ -0,0 +1,62 @@
+package freenet.node.fcp;
+
+import java.net.MalformedURLException;
+
+import freenet.keys.FreenetURI;
+import freenet.keys.USK;
+import freenet.node.Node;
+import freenet.support.Fields;
+import freenet.support.SimpleFieldSet;
+
+/**
+ * Sent by a client to subscribe to a USK. The client will then be notified
whenever a new latest version of
+ * the USK is available. There is a flag for whether the node should actively
probe for the USK.
+ *
+ * SubscribeUSK
+ * URI=USK at
60I8H8HinpgZSOuTSD66AVlIFAy-xsppFr0YCzCar7c,NzdivUGCGOdlgngOGRbbKDNfSCnjI0FXjHLzJM4xkJ4,AQABAAE/index/4
+ * DontPoll=true // meaning passively subscribe, don't cause the node to
actively probe for it
+ * Identifier=identifier
+ * End
+ */
+public class SubscribeUSKMessage extends FCPMessage {
+
+ public static final String name = "SubscribeUSK";
+
+ final USK key;
+ final boolean dontPoll;
+ final String identifier;
+
+ public SubscribeUSKMessage(SimpleFieldSet fs) throws
MessageInvalidException {
+ this.identifier = fs.get("Identifier");
+ if(identifier == null)
+ throw new
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "No Identifier!",
null);
+ String suri = fs.get("URI");
+ if(suri == null)
+ throw new
MessageInvalidException(ProtocolErrorMessage.MISSING_FIELD, "Expected a URI on
SubscribeUSK", identifier);
+ FreenetURI uri;
+ try {
+ uri = new FreenetURI(suri);
+ key = USK.create(uri);
+ } catch (MalformedURLException e) {
+ throw new
MessageInvalidException(ProtocolErrorMessage.INVALID_FIELD, "Could not parse
URI: "+e, identifier);
+ }
+ this.dontPoll = Fields.stringToBool(fs.get("DontPoll"), false);
+ }
+
+ public SimpleFieldSet getFieldSet() {
+ SimpleFieldSet fs = new SimpleFieldSet(true);
+ fs.put("URI", key.getURI().toString());
+ fs.put("DontPoll", Boolean.toString(dontPoll));
+ return fs;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void run(FCPConnectionHandler handler, Node node)
+ throws MessageInvalidException {
+ new SubscribeUSK(this, node, handler);
+ }
+
+}
Added: trunk/freenet/src/freenet/node/fcp/SubscribedUSKUpdate.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/SubscribedUSKUpdate.java 2006-03-25
21:04:34 UTC (rev 8320)
+++ trunk/freenet/src/freenet/node/fcp/SubscribedUSKUpdate.java 2006-03-25
22:43:18 UTC (rev 8321)
@@ -0,0 +1,38 @@
+package freenet.node.fcp;
+
+import freenet.keys.USK;
+import freenet.node.Node;
+import freenet.support.SimpleFieldSet;
+
+public class SubscribedUSKUpdate extends FCPMessage {
+
+ final String identifier;
+ final long edition;
+ final USK key;
+
+ static final String name = "SubscribedUSKUpdate";
+
+ public SubscribedUSKUpdate(String identifier, long l, USK key) {
+ this.identifier = identifier;
+ this.edition = l;
+ this.key = key;
+ }
+
+ public SimpleFieldSet getFieldSet() {
+ SimpleFieldSet fs = new SimpleFieldSet(true);
+ fs.put("Identifier", identifier);
+ fs.put("Edition", Long.toString(edition));
+ fs.put("URI", key.getURI().toString());
+ return fs;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void run(FCPConnectionHandler handler, Node node)
+ throws MessageInvalidException {
+ throw new
MessageInvalidException(ProtocolErrorMessage.INVALID_MESSAGE,
"SubscribedUSKUpdate goes from server to client not the other way around",
identifier);
+ }
+
+}