public boolean keepalive() {
boolean disconnect = false;
if ( keepAliveCount >= 0 && requestCount>keepAliveCount ) disconnect = true;
- else if ( keepAliveTime >= 0 && keepAliveTime> (System.currentTimeMillis()-connectTime) ) disconnect = true;
+ else if ( keepAliveTime >= 0 && (System.currentTimeMillis()-connectTime)>keepAliveTime ) disconnect = true;
if ( disconnect ) disconnect();
return disconnect;
}
public boolean keepalive() {
//do nothing, the pool checks on every return
- return false;
+ return (queue==null)?false:queue.checkIdleKeepAlive();
}
public int getInPoolSize() {
return notinuse.size();
}
+
+ public synchronized boolean checkIdleKeepAlive() {
+ DataSender[] list = new DataSender[notinuse.size()];
+ notinuse.toArray(list);
+ boolean result = false;
+ for (int i=0; i<list.length; i++) {
+ result = result | list[i].keepalive();
+ }
+ return result;
+ }
public synchronized DataSender getSender(long timeout) {
long start = System.currentTimeMillis();