You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2008/03/17 06:54:07 UTC

svn commit: r637730 - /mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java

Author: trustin
Date: Sun Mar 16 22:54:05 2008
New Revision: 637730

URL: http://svn.apache.org/viewvc?rev=637730&view=rev
Log:
Improved DummySession to set the position of FileRegion's underlying FileChannel

Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java?rev=637730&r1=637729&r2=637730&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/DummySession.java Sun Mar 16 22:54:05 2008
@@ -19,6 +19,7 @@
  */
 package org.apache.mina.common;
 
+import java.io.IOException;
 import java.net.SocketAddress;
 import java.util.List;
 import java.util.Set;
@@ -117,8 +118,19 @@
             }
 
             public void flush(IoSession session) {
-                getFilterChain().fireMessageSent(
-                        ((DummySession) session).getWriteRequestQueue().poll(session));
+                DummySession s = (DummySession) session;
+                WriteRequest req = s.getWriteRequestQueue().poll(session);
+                Object m = req.getMessage();
+                if (m instanceof FileRegion) {
+                    FileRegion file = (FileRegion) m;
+                    try {
+                        file.getFileChannel().position(file.getPosition() + file.getRemainingBytes());
+                        file.update(file.getRemainingBytes());
+                    } catch (IOException e) {
+                        s.getFilterChain().fireExceptionCaught(e);
+                    }
+                }
+                getFilterChain().fireMessageSent(req);
             }
 
             public void remove(IoSession session) {