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]