Author: trustin
Date: Thu Dec 23 23:12:12 2004
New Revision: 123281

URL: http://svn.apache.org/viewcvs?view=rev&rev=123281
Log:
Fixed: All messages are not decoded
Better performance when IoHandler read up all of read buffer.
Modified:
   
incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoSession.java
   
incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketIoProcessor.java
   
incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java

Modified: 
incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoSession.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoSession.java?view=diff&rev=123281&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoSession.java&r1=123280&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoSession.java&r2=123281
==============================================================================
--- 
incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoSession.java
   (original)
+++ 
incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/IoSession.java
   Thu Dec 23 23:12:12 2004
@@ -36,9 +36,9 @@
 
     void close();
     
-    void write(byte[] buf, Object marker);
-
     void write(ByteBuffer buf, Object marker);
+
+    void write(byte[] buf, Object marker);
 
     void write(byte[] buf, int offset, int length, Object marker);
 

Modified: 
incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketIoProcessor.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketIoProcessor.java?view=diff&rev=123281&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketIoProcessor.java&r1=123280&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketIoProcessor.java&r2=123281
==============================================================================
--- 
incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketIoProcessor.java
    (original)
+++ 
incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/socket/SocketIoProcessor.java
    Thu Dec 23 23:12:12 2004
@@ -238,7 +238,10 @@
 
             synchronized( buf )
             {
-                buf.compact();
+                if (buf.hasRemaining())
+                    buf.compact();
+                else
+                    buf.clear();
 
                 try
                 {

Modified: 
incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java
Url: 
http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java?view=diff&rev=123281&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java&r1=123280&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java&r2=123281
==============================================================================
--- 
incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java
     (original)
+++ 
incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/IoAdapter.java
     Thu Dec 23 23:12:12 2004
@@ -112,14 +112,24 @@
             Object result;
             try
             {
-                synchronized( in )
-                {
-                    result = decoder.decode( psession, in );
-                }
+                for ( ;; ) {
+                    result = null;
+                    synchronized( in )
+                    {
+                        if (in.hasRemaining()) {
+                            result = decoder.decode( psession, in );
+                        }
+                    }
 
-                if( result != null )
-                {
-                    filterManager.fireMessageReceived( psession, result );
+                    if( result == null )
+                    {
+                        // read up all data
+                        break;
+                    }
+                    else
+                    {
+                        filterManager.fireMessageReceived( psession, result );
+                    } 
                 }
             }
             catch( Throwable t )

Reply via email to