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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]