You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2012/07/10 07:27:03 UTC

svn commit: r1359483 - /mina/branches/2.0/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java

Author: elecharny
Date: Tue Jul 10 05:27:03 2012
New Revision: 1359483

URL: http://svn.apache.org/viewvc?rev=1359483&view=rev
Log:
Removed the WriteRequest from the ProtocolEncoderOutputImpl class : it's a waste of space, as the write request will remain stored until the session is closed. Just keep the destination (see DIRMINA-772)

Modified:
    mina/branches/2.0/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java

Modified: mina/branches/2.0/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java
URL: http://svn.apache.org/viewvc/mina/branches/2.0/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java?rev=1359483&r1=1359482&r2=1359483&view=diff
==============================================================================
--- mina/branches/2.0/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java (original)
+++ mina/branches/2.0/mina-core/src/main/java/org/apache/mina/filter/codec/ProtocolCodecFilter.java Tue Jul 10 05:27:03 2012
@@ -80,7 +80,7 @@ public class ProtocolCodecFilter extends
     /**
      * Creates a new instance of ProtocolCodecFilter, without any factory.
      * The encoder/decoder factory will be created as an inner class, using
-     * the two parameters (encoder and decoder). 
+     * the two parameters (encoder and decoder).
      * 
      * @param encoder The class responsible for encoding the message
      * @param decoder The class responsible for decoding the message
@@ -208,11 +208,11 @@ public class ProtocolCodecFilter extends
      * throws an exception.
      * 
      *  while ( buffer not empty )
-     *    try 
+     *    try
      *      decode ( buffer )
      *    catch
      *      break;
-     *    
+     * 
      */
     @Override
     public void messageReceived(NextFilter nextFilter, IoSession session,
@@ -229,8 +229,8 @@ public class ProtocolCodecFilter extends
         ProtocolDecoderOutput decoderOut = getDecoderOut(session, nextFilter);
         
         // Loop until we don't have anymore byte in the buffer,
-        // or until the decoder throws an unrecoverable exception or 
-        // can't decoder a message, because there are not enough 
+        // or until the decoder throws an unrecoverable exception or
+        // can't decoder a message, because there are not enough
         // data in the buffer
         while (in.hasRemaining()) {
             int oldPos = in.position();
@@ -284,11 +284,11 @@ public class ProtocolCodecFilter extends
 
         if (writeRequest instanceof MessageWriteRequest) {
             MessageWriteRequest wrappedRequest = (MessageWriteRequest) writeRequest;
-            nextFilter.messageSent(session, wrappedRequest.getParentRequest());            
+            nextFilter.messageSent(session, wrappedRequest.getParentRequest());
         }
         else {
             nextFilter.messageSent(session, writeRequest);
-        }        
+        }
     }
 
     @Override
@@ -335,7 +335,7 @@ public class ProtocolCodecFilter extends
                 // Flush only when the buffer has remaining.
                 if (!(encodedMessage instanceof IoBuffer) || ((IoBuffer) encodedMessage).hasRemaining()) {
                     SocketAddress destination = writeRequest.getDestination();
-                    WriteRequest encodedWriteRequest = new EncodedWriteRequest(encodedMessage, null, destination); 
+                    WriteRequest encodedWriteRequest = new EncodedWriteRequest(encodedMessage, null, destination);
 
                     nextFilter.filterWrite(session, encodedWriteRequest);
                 }
@@ -435,13 +435,16 @@ public class ProtocolCodecFilter extends
 
         private final NextFilter nextFilter;
 
-        private final WriteRequest writeRequest;
+        /** The WriteRequest destination */
+        private final SocketAddress destination;
 
         public ProtocolEncoderOutputImpl(IoSession session,
                 NextFilter nextFilter, WriteRequest writeRequest) {
             this.session = session;
             this.nextFilter = nextFilter;
-            this.writeRequest = writeRequest;
+            
+            // Only store the destination, not the full WriteRequest.
+            destination = writeRequest.getDestination();
         }
 
         public WriteFuture flush() {
@@ -459,11 +462,13 @@ public class ProtocolCodecFilter extends
                 if (!(encodedMessage instanceof IoBuffer) || ((IoBuffer) encodedMessage).hasRemaining()) {
                     future = new DefaultWriteFuture(session);
                     nextFilter.filterWrite(session, new EncodedWriteRequest(encodedMessage,
-                            future, writeRequest.getDestination()));
+                            future, destination));
                 }
             }
 
             if (future == null) {
+                // Creates an empty writeRequest containing the destination
+                WriteRequest writeRequest = new DefaultWriteRequest(null, null, destination);
                 future = DefaultWriteFuture.newNotWrittenFuture(
                         session, new NothingWrittenException(writeRequest));
             }
@@ -483,7 +488,7 @@ public class ProtocolCodecFilter extends
         disposeEncoder(session);
         disposeDecoder(session);
         
-        // We also remove the callback  
+        // We also remove the callback
         disposeDecoderOut(session);
     }