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));
}