You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2006/03/07 21:30:28 UTC
svn commit: r384000 -
/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java
Author: fhanik
Date: Tue Mar 7 12:30:26 2006
New Revision: 384000
URL: http://svn.apache.org/viewcvs?rev=384000&view=rev
Log:
implemented timing on the pooled queue
Modified:
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java?rev=384000&r1=383999&r2=384000&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java Tue Mar 7 12:30:26 2006
@@ -157,16 +157,27 @@
}
public synchronized DataSender getSender(long timeout) {
- if ( !isOpen ) throw new IllegalStateException("Queue is closed");
- DataSender sender = null;
- if ( notinuse.size() == 0 && inuse.size()<limit) {
- sender = parent.getNewDataSender();
- } else if (notinuse.size() > 0) {
+ long start = System.currentTimeMillis();
+ while ( true ) {
+ if (!isOpen)throw new IllegalStateException("Queue is closed");
+ DataSender sender = null;
+ if (notinuse.size() == 0 && inuse.size() < limit) {
+ sender = parent.getNewDataSender();
+ } else if (notinuse.size() > 0) {
sender = (DataSender) notinuse.remove(0);
- }
- if ( sender != null ) inuse.add(sender);
-// System.out.println("get: in use:"+inuse.size()+" not:"+notinuse.size()+" thread:"+Thread.currentThread().getName());
- return sender;
+ }
+ if (sender != null) {
+ inuse.add(sender);
+ return sender;
+ }//end if
+ long delta = System.currentTimeMillis() - start;
+ if ( delta > timeout && timeout>0) return null;
+ else {
+ try {
+ wait(timeout - delta);
+ }catch (InterruptedException x){}
+ }//end if
+ }
}
public synchronized void returnSender(DataSender sender) {
@@ -177,7 +188,7 @@
//to do
inuse.remove(sender);
notinuse.add(sender);
-// System.out.println("return: in use:"+inuse.size()+" not:"+notinuse.size()+" thread:"+Thread.currentThread().getName());
+ notify();
}
public synchronized void close() {
@@ -194,6 +205,7 @@
}//for
notinuse.clear();
inuse.clear();
+ notify();
@@ -201,6 +213,7 @@
public synchronized void open() {
isOpen = true;
+ notify();
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org