Author: trustin
Date: Tue Nov 13 19:54:10 2007
New Revision: 594746

URL: http://svn.apache.org/viewvc?rev=594746&view=rev
Log:
Removed unnecessary wait time when policy is OFF

Modified:
    
mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilter.java

Modified: 
mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilter.java
URL: 
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilter.java?rev=594746&r1=594745&r2=594746&view=diff
==============================================================================
--- 
mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilter.java
 (original)
+++ 
mina/trunk/core/src/main/java/org/apache/mina/filter/keepalive/KeepAliveFilter.java
 Tue Nov 13 19:54:10 2007
@@ -119,8 +119,8 @@
  */
 public class KeepAliveFilter extends IoFilterAdapter {
     
-    private final AttributeKey WAITING_FOR_PONG = new AttributeKey(
-            getClass(), "waitingForPong");
+    private final AttributeKey WAITING_FOR_RESPONSE = new AttributeKey(
+            getClass(), "waitingForResponse");
 
     private final KeepAliveMessageFactory messageFactory;
     private volatile KeepAlivePolicy policy;
@@ -268,18 +268,24 @@
             NextFilter nextFilter, IoSession session, IdleStatus status) 
throws Exception {
         try {
             if (status == IdleStatus.READER_IDLE) {
-                if (!session.containsAttribute(WAITING_FOR_PONG)) {
+                if (!session.containsAttribute(WAITING_FOR_RESPONSE)) {
                     Object pingMessage = messageFactory.getRequest(session);
                     if (pingMessage != null) {
                         // The first idleness.
                         nextFilter.filterWrite(
                                 session,
                                 new DefaultWriteRequest(pingMessage));
-                        markStatus(session);
+                        
+                        // If policy is OFF, there's no need to wait for
+                        // the response.
+                        if (getPolicy() != KeepAlivePolicy.OFF) {
+                            markStatus(session);
+                        } else {
+                            resetStatus(session);
+                        }
                     }
                 } else {
                     resetStatus(session);
-                    // DO something based on policy.
                     switch (getPolicy()) {
                     case OFF:
                         break;
@@ -321,14 +327,14 @@
             // Mark only when keepAliveTimeout is enabled.
             session.getConfig().setIdleTime(
                     IdleStatus.READER_IDLE, getKeepAliveRequestTimeout());
-            session.setAttribute(WAITING_FOR_PONG);
+            session.setAttribute(WAITING_FOR_RESPONSE);
         }
     }
 
     private void resetStatus(IoSession session) {
         session.getConfig().setIdleTime(
                 IdleStatus.READER_IDLE, getKeepAliveRequestInterval());
-        session.removeAttribute(WAITING_FOR_PONG);
+        session.removeAttribute(WAITING_FOR_RESPONSE);
     }
     
     private boolean isKeepAliveMessage(IoSession session, Object message) {


Reply via email to