Author: jflesch
Date: 2006-07-09 16:06:00 +0000 (Sun, 09 Jul 2006)
New Revision: 9521

Modified:
   trunk/apps/Thaw/build.xml
   trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java
   trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java
   trunk/apps/Thaw/src/thaw/fcp/FCPMessage.java
   trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java
   trunk/apps/Thaw/src/thaw/fcp/FCPWatchGlobal.java
   trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
Log:
Update FCPWatchGlobal + Fixing various issues

Modified: trunk/apps/Thaw/build.xml
===================================================================
--- trunk/apps/Thaw/build.xml   2006-07-09 14:06:00 UTC (rev 9520)
+++ trunk/apps/Thaw/build.xml   2006-07-09 16:06:00 UTC (rev 9521)
@@ -11,29 +11,6 @@

   <property name="javac.debug" value="false" />

-  
-  <target name="compile-gcj">
-    <mkdir dir="${bin.dir}" />
-
-    <javac compiler="gcj" srcdir="${src.dir}" destdir="${bin.dir}" 
debug="true" optimize="true">
-
-      <compilerarg value="-Xlint" />
-
-      <classpath>
-        <pathelement location="${hsqldb.location}"/>
-      </classpath>
-
-    </javac>
-
-    <copy todir="${bin.dir}">
-      <fileset dir="${src.dir}">
-        <include name="**/*.properties" />
-      </fileset>
-    </copy>
-
-  </target>
-
-
   <target name="compile">
     <mkdir dir="${bin.dir}" />


Modified: trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java      2006-07-09 14:06:00 UTC 
(rev 9520)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java      2006-07-09 16:06:00 UTC 
(rev 9521)
@@ -60,6 +60,8 @@
                        String cutcut[] = key.split("/");                       
                        filename = cutcut[cutcut.length-1];
                }
+
+               /* TODO : Check if the file was not already downloaded */

                Logger.debug(this, "Getting "+key);

@@ -218,7 +220,7 @@

                        status = "Loading";

-                       fileSize = (new 
Long(message.getValue("DataLength"))).longValue();
+                       fileSize = message.getAmountOfDataWaiting();

                        status = "Writing";

@@ -306,7 +308,7 @@


        public boolean stop(FCPQueueManager queryManager) {
-               Logger.info(this, "*TODO* stop()  *TODO*");
+               Logger.info(this, "stop()");
                /* TODO */
                return false;
        }

Modified: trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java     2006-07-09 14:06:00 UTC 
(rev 9520)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPConnection.java     2006-07-09 16:06:00 UTC 
(rev 9521)
@@ -175,7 +175,7 @@

        /**
         * Read a line.
-        * @return null if error
+        * @return null if disconnected or error
         */
        public String readLine() {
                String result;
@@ -192,7 +192,14 @@
                                        c = reader.read();

                                        if(c == -1) {
-                                               Logger.notice(this, "Unable to 
read ? => disconnect ?");
+                                               if(isConnected())
+                                                       Logger.error(this, 
"Unable to read but still connected");
+                                               else
+                                                       Logger.notice(this, 
"Disconnected");
+
+                                               /* Warns every observers */
+                                               disconnect();
+
                                                return null;
                                        }

@@ -208,7 +215,14 @@
                                return result;

                        } catch (java.io.IOException e) {
-                               Logger.notice(this, "Unable to read() on the 
socket ?! => disconnect ? : "+e.toString());
+                               if(isConnected())
+                                       Logger.error(this, "IOException while 
reading but still connected, wtf? : "+e.toString());
+                               else
+                                       Logger.notice(this, "IOException. 
Disconnected.");
+
+                               /* Warns every observers */
+                               disconnect();
+
                                return null;
                        }
                } else {

Modified: trunk/apps/Thaw/src/thaw/fcp/FCPMessage.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPMessage.java        2006-07-09 14:06:00 UTC 
(rev 9520)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPMessage.java        2006-07-09 16:06:00 UTC 
(rev 9521)
@@ -83,6 +83,10 @@
        }

        public void setValue(String field, String value) {
+               if(field.equals("DataLength")) {
+                       setAmountOfDataWaiting((new Long(value)).longValue());
+               }
+
                fields.put(field, value);
        }


Modified: trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java   2006-07-09 14:06:00 UTC 
(rev 9520)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPQueueManager.java   2006-07-09 16:06:00 UTC 
(rev 9521)
@@ -19,10 +19,12 @@
        private Vector runningQueries;

        private Thread scheduler;
+       private boolean stopThread = false;

        private int lastId;
        private String thawId;

+
        /**
         * Calls setQueryManager() and then resetQueue().
         */
@@ -132,26 +134,40 @@
         * Compare using the key.
         */
        public boolean isAlreadyPresent(FCPQuery query) {
+               boolean interrupted=true;
+
                Iterator it;

-               for(it = runningQueries.iterator();
-                   it.hasNext(); )
-                       {
-                               FCPQuery plop = (FCPQuery)it.next();
-                               if(plop.getFileKey().equals(query.getFileKey()))
-                                       return true;
+               while(interrupted) {
+                       interrupted = false;
+
+                       try {
+                               for(it = runningQueries.iterator();
+                                   it.hasNext(); )
+                                       {
+                                               FCPQuery plop = 
(FCPQuery)it.next();
+                                               
if(plop.getFileKey().equals(query.getFileKey()))
+                                                       return true;
+                                       }
+                               
+                               for(int i = 0 ; i <= PRIORITY_MIN ; i++) {
+                                       for(it = pendingQueries[i].iterator();
+                                           it.hasNext(); )
+                                               {
+                                                       FCPQuery plop = 
(FCPQuery)it.next();
+                                                       
if(plop.getFileKey().equals(query.getFileKey()))
+                                                               return true;
+                                               }
+                                       
+                               }
+                       } catch(java.util.ConcurrentModificationException e) {
+                               Logger.notice(this, "isAlreadyPresent(): 
Collission. Reitering");
+                               interrupted = true;
                        }

-               for(int i = 0 ; i <= PRIORITY_MIN ; i++) {
-                       for(it = pendingQueries[i].iterator();
-                           it.hasNext(); )
-                               {
-                                       FCPQuery plop = (FCPQuery)it.next();
-                                       
if(plop.getFileKey().equals(query.getFileKey()))
-                                               return true;
-                               }
                }

+
                return false;
        }

@@ -183,34 +199,39 @@
                                        || runningDownloads < maxDownloads) ;
                            priority++) {

-                               for(Iterator it = 
pendingQueries[priority].iterator();
-                                   it.hasNext()
-                                           && (runningInsertions < 
maxInsertions
-                                               || runningDownloads < 
maxDownloads); ) {
-                                       
-                                       FCPQuery query = (FCPQuery)it.next();
-                                       
-                                       if( (query.getQueryType() == 1
-                                            && runningDownloads < maxDownloads)
-                                           || (query.getQueryType() == 2
-                                               && runningInsertions < 
maxInsertions) ) {
+                               try {
+                                       for(Iterator it = 
pendingQueries[priority].iterator();
+                                           it.hasNext()
+                                                   && (runningInsertions < 
maxInsertions
+                                                       || runningDownloads < 
maxDownloads); ) {

-                                               Logger.debug(this, "Scheduler : 
Moving a query from pendingQueue to the runningQueue");
-                                               
pendingQueries[priority].remove(query);
+                                               FCPQuery query = 
(FCPQuery)it.next();

-                                               it = 
pendingQueries[priority].iterator(); /* We reset iterator */
+                                               if( (query.getQueryType() == 1
+                                                    && runningDownloads < 
maxDownloads)
+                                                   || (query.getQueryType() == 
2
+                                                       && runningInsertions < 
maxInsertions) ) {
+                                                       
+                                                       Logger.debug(this, 
"Scheduler : Moving a query from pendingQueue to the runningQueue");
+                                                       
pendingQueries[priority].remove(query);
+                                                       
+                                                       it = 
pendingQueries[priority].iterator(); /* We reset iterator */
+                                                       
+                                                       
addQueryToTheRunningQueue(query);
+                                                       
+                                                       if(query.getQueryType() 
== 1)
+                                                               
runningDownloads++;
+                                                       
+                                                       if(query.getQueryType() 
== 2)
+                                                               
runningInsertions++;
+                                               }

-                                               
addQueryToTheRunningQueue(query);
-
-                                               if(query.getQueryType() == 1)
-                                                       runningDownloads++;
-
-                                               if(query.getQueryType() == 2)
-                                                       runningInsertions++;
+                                               
+                                               
                                        }
-
-                                       
-
+                               } 
catch(java.util.ConcurrentModificationException e) {
+                                       Logger.notice(this, "Collision.");
+                                       priority--;
                                }

                        }
@@ -227,6 +248,9 @@
                                /* We don't care */
                        }

+                       if(stopThread)
+                               return;
+
                        ordonnance();
                }

@@ -234,11 +258,12 @@

        public void startScheduler() {
                scheduler = new Thread(this);
+               stopThread = false;
                scheduler.start();
        }

        public void stopScheduler() {
-               scheduler.stop(); /* I should find a safer way */
+               stopThread = true;
        }



Modified: trunk/apps/Thaw/src/thaw/fcp/FCPWatchGlobal.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPWatchGlobal.java    2006-07-09 14:06:00 UTC 
(rev 9520)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPWatchGlobal.java    2006-07-09 16:06:00 UTC 
(rev 9521)
@@ -63,4 +63,12 @@
        public boolean isFinished() {
                return true;
        }
+
+       public boolean isSuccessful() {
+               return true;
+       }
+
+       public boolean isRunning() {
+               return false;
+       }
 }

Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java  
2006-07-09 14:06:00 UTC (rev 9520)
+++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java  
2006-07-09 16:06:00 UTC (rev 9521)
@@ -61,7 +61,7 @@
                }

                if(column == 1) {
-                       return ((new Long(query.getFileSize())).toString() + " 
B");
+                       return ((new Long(query.getFileSize())).toString() + " 
B"); /* TODO : Convert to KB / MB / GB */
                }

                if(column == 2) {
@@ -115,6 +115,8 @@
        public void notifyObservers() {
                TableModelListener[] listeners = getTableModelListeners();

+               /* TODO : Sort queries by progression */
+
                for(int i = 0 ; i < listeners.length ; i++) {
                        listeners[i].tableChanged(new TableModelEvent(this));
                }


Reply via email to