Author: toad
Date: 2006-07-26 16:04:05 +0000 (Wed, 26 Jul 2006)
New Revision: 9773

Modified:
   trunk/freenet/src/freenet/node/Version.java
   trunk/freenet/src/freenet/node/fcp/ClientGet.java
   trunk/freenet/src/freenet/node/fcp/ClientPut.java
   trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
   trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
Log:
904: Broadcast PersistentGet/Put/PutDir to all FCP clients listening on the 
global queue, when a request is added.
Also when one goes from starting to started-but-not-finished.

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-07-26 15:23:54 UTC (rev 
9772)
+++ trunk/freenet/src/freenet/node/Version.java 2006-07-26 16:04:05 UTC (rev 
9773)
@@ -18,7 +18,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 903;
+       private static final int buildNumber = 904;

        /** Oldest build of Fred we will talk to */
        private static final int oldLastGoodBuild = 870;

Modified: trunk/freenet/src/freenet/node/fcp/ClientGet.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientGet.java   2006-07-26 15:23:54 UTC 
(rev 9772)
+++ trunk/freenet/src/freenet/node/fcp/ClientGet.java   2006-07-26 16:04:05 UTC 
(rev 9773)
@@ -112,6 +112,10 @@
                                throw e;
                        }
                getter = new ClientGetter(this, client.node.chkFetchScheduler, 
client.node.sskFetchScheduler, uri, fctx, priorityClass, client, returnBucket);
+               if(persistenceType != PERSIST_CONNECTION) {
+                       FCPMessage msg = persistentTagMessage();
+                       client.queueClientRequestMessage(msg, 0);
+               }
        }


@@ -162,9 +166,12 @@
                                throw e;
                        }
                getter = new ClientGetter(this, client.node.chkFetchScheduler, 
client.node.sskFetchScheduler, uri, fctx, priorityClass, client, returnBucket);
-               if((persistenceType != PERSIST_CONNECTION) && (handler != null))
-                       sendPendingMessages(handler.outputHandler, true, true, 
false);
-                       
+               if(persistenceType != PERSIST_CONNECTION) {
+                       FCPMessage msg = persistentTagMessage();
+                       client.queueClientRequestMessage(msg, 0);
+                       if(handler != null && (!handler.isGlobalSubscribed()))
+                               handler.outputHandler.queue(msg);
+               }
        }

        /**
@@ -223,16 +230,24 @@
                returnBucket = ret;

                getter = new ClientGetter(this, client.node.chkFetchScheduler, 
client.node.sskFetchScheduler, uri, fctx, priorityClass, client, returnBucket);
+               if(persistenceType != PERSIST_CONNECTION) {
+                       FCPMessage msg = persistentTagMessage();
+                       client.queueClientRequestMessage(msg, 0);
+               }
        }

        public void start() {
                try {
                        getter.start();
+                       started = true;
+                       if(persistenceType != PERSIST_CONNECTION && !finished) {
+                               FCPMessage msg = persistentTagMessage();
+                               client.queueClientRequestMessage(msg, 0);
+                       }
                } catch (FetchException e) {
                        started = true;
                        onFailure(e, null);
                }
-               started = true;
        }

        public void onLostConnection() {
@@ -353,7 +368,7 @@
                }
                if(!onlyData) {
                        if(includePersistentRequest) {
-                               FCPMessage msg = new PersistentGet(identifier, 
uri, verbosity, priorityClass, returnType, persistenceType, targetFile, 
tempFile, clientToken, client.isGlobalQueue, started);
+                               FCPMessage msg = persistentTagMessage();
                                handler.queue(msg);
                        }
                        if(progressPending != null)
@@ -365,6 +380,10 @@
                        handler.queue(allDataPending);
        }

+       private FCPMessage persistentTagMessage() {
+               return new PersistentGet(identifier, uri, verbosity, 
priorityClass, returnType, persistenceType, targetFile, tempFile, clientToken, 
client.isGlobalQueue, started);
+       }
+
        public void onFailure(FetchException e, ClientGetter state) {
                synchronized(this) {
                        succeeded = false;

Modified: trunk/freenet/src/freenet/node/fcp/ClientPut.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPut.java   2006-07-26 15:23:54 UTC 
(rev 9772)
+++ trunk/freenet/src/freenet/node/fcp/ClientPut.java   2006-07-26 16:04:05 UTC 
(rev 9773)
@@ -71,8 +71,12 @@
                inserter = new ClientPutter(this, data, uri, cm, 
                                ctx, client.node.chkPutScheduler, 
client.node.sskPutScheduler, priorityClass, 
                                getCHKOnly, isMetadata, client, null);
-               if((persistenceType != PERSIST_CONNECTION) && (handler != null))
-                       sendPendingMessages(handler.outputHandler, true, false, 
false);
+               if(persistenceType != PERSIST_CONNECTION) {
+                       FCPMessage msg = persistentTagMessage();
+                       client.queueClientRequestMessage(msg, 0);
+                       if(handler != null && (!handler.isGlobalSubscribed()))
+                               handler.outputHandler.queue(msg);
+               }
        }

        /**
@@ -155,17 +159,25 @@
                this.clientMetadata = cm;
                inserter = new ClientPutter(this, data, uri, cm, ctx, 
client.node.chkPutScheduler, 
                                client.node.sskPutScheduler, priorityClass, 
getCHKOnly, isMetadata, client, fs.subset("progress"));
+               if(persistenceType != PERSIST_CONNECTION) {
+                       FCPMessage msg = persistentTagMessage();
+                       client.queueClientRequestMessage(msg, 0);
+               }
        }

        public void start() {
                if(finished) return;
                try {
                        inserter.start();
+                       started = true;
+                       if(persistenceType != PERSIST_CONNECTION && !finished) {
+                               FCPMessage msg = persistentTagMessage();
+                               client.queueClientRequestMessage(msg, 0);
+                       }
                } catch (InserterException e) {
                        started = true;
                        onFailure(e, null);
                }
-               started = true;
        }

        protected void freeData() {

Modified: trunk/freenet/src/freenet/node/fcp/ClientPutDir.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2006-07-26 
15:23:54 UTC (rev 9772)
+++ trunk/freenet/src/freenet/node/fcp/ClientPutDir.java        2006-07-26 
16:04:05 UTC (rev 9773)
@@ -51,8 +51,13 @@
                        totalSize = -1;
                }
                putter = p;
-               if(persistenceType != PERSIST_CONNECTION)
+               if(persistenceType != PERSIST_CONNECTION) {
                        client.register(this, false);
+                       FCPMessage msg = persistentTagMessage();
+                       client.queueClientRequestMessage(msg, 0);
+                       if(handler != null && (!handler.isGlobalSubscribed()))
+                               handler.outputHandler.queue(msg);
+               }
        }

        public ClientPutDir(SimpleFieldSet fs, FCPClient client) throws 
PersistenceParseException, IOException {
@@ -127,16 +132,24 @@
                putter = p;
                numberOfFiles = fileCount;
                totalSize = size;
-               if(!finished)
-                       start();
+               if(persistenceType != PERSIST_CONNECTION) {
+                       FCPMessage msg = persistentTagMessage();
+                       client.queueClientRequestMessage(msg, 0);
+               }
        }

        public void start() {
+               if(finished) return;
+               if(started) return;
                try {
                        if(putter != null)
                                putter.start();
                        started = true;
                        Logger.minor(this, "Started "+putter);
+                       if(persistenceType != PERSIST_CONNECTION && !finished) {
+                               FCPMessage msg = persistentTagMessage();
+                               client.queueClientRequestMessage(msg, 0);
+                       }
                } catch (InserterException e) {
                        started = true;
                        onFailure(e, null);

Modified: trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java
===================================================================
--- trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java        
2006-07-26 15:23:54 UTC (rev 9772)
+++ trunk/freenet/src/freenet/node/fcp/FCPConnectionHandler.java        
2006-07-26 16:04:05 UTC (rev 9773)
@@ -226,4 +226,8 @@
                }
        }

+       public boolean isGlobalSubscribed() {
+               return client.watchGlobal;
+       }
+
 }


Reply via email to