Author: jvermillard
Date: Thu Feb 14 09:02:43 2008
New Revision: 627802
URL: http://svn.apache.org/viewvc?rev=627802&view=rev
Log:
using mmaped files
Modified:
mina/asyncweb/trunk/examples/src/main/java/org/apache/asyncweb/examples/file/FileHttpService.java
Modified:
mina/asyncweb/trunk/examples/src/main/java/org/apache/asyncweb/examples/file/FileHttpService.java
URL:
http://svn.apache.org/viewvc/mina/asyncweb/trunk/examples/src/main/java/org/apache/asyncweb/examples/file/FileHttpService.java?rev=627802&r1=627801&r2=627802&view=diff
==============================================================================
---
mina/asyncweb/trunk/examples/src/main/java/org/apache/asyncweb/examples/file/FileHttpService.java
(original)
+++
mina/asyncweb/trunk/examples/src/main/java/org/apache/asyncweb/examples/file/FileHttpService.java
Thu Feb 14 09:02:43 2008
@@ -21,9 +21,11 @@
package org.apache.asyncweb.examples.file;
import java.io.File;
+import java.io.FileInputStream;
import java.io.FilenameFilter;
import java.io.RandomAccessFile;
import java.net.URI;
+import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.InvalidParameterException;
import java.util.regex.Pattern;
@@ -168,19 +170,11 @@
response.setStatus(HttpResponseStatus.OK);
- FileChannel fileChannel = (new RandomAccessFile(f, "r"))
- .getChannel();
-
- // TODO : well it's quite explosive on big files, need to change
the API
-
- int fileSize = (int) fileChannel.size();
- IoBuffer responseBuffer = IoBuffer.allocate(fileSize);
-
- fileChannel.read(responseBuffer.buf());
- fileChannel.close();
-
- responseBuffer.flip();
- response.setContent(responseBuffer);
+ RandomAccessFile raf = new RandomAccessFile(f, "r");
+ FileChannel fc = raf.getChannel();
+ MappedByteBuffer buffer = fc.map(FileChannel.MapMode.READ_ONLY, 0,
fc.size());
+ response.setContent(IoBuffer.wrap(buffer));
+ fc.close();
} else {
// the file is not found, we send the famous 404 error