Author: norman
Date: Thu Nov 18 18:50:47 2010
New Revision: 1036571
URL: http://svn.apache.org/viewvc?rev=1036571&view=rev
Log:
Use Channels to transfer data if possible and be a bit smarter with
LazySkippingInputStream. See IMAP-231
Modified:
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/LazySkippingInputStream.java
Modified:
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java?rev=1036571&r1=1036570&r2=1036571&view=diff
==============================================================================
---
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java
(original)
+++
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/InputStreamContent.java
Thu Nov 18 18:50:47 2010
@@ -65,6 +65,7 @@ public final class InputStreamContent im
*/
public void writeTo(WritableByteChannel channel) throws IOException {
InputStream in = null;
+ long skipped = 0;
try {
switch (type) {
case Full:
@@ -74,10 +75,13 @@ public final class InputStreamContent im
in = m.getBodyContent();
break;
}
-
+ if (in instanceof LazySkippingInputStream) {
+ skipped = ((LazySkippingInputStream) in).getSkippedBytes();
+ in = ((LazySkippingInputStream) in).getWrapped();
+ }
if (in instanceof FileInputStream) {
FileChannel fileChannel = ((FileInputStream)in).getChannel();
- fileChannel.transferTo(0, fileChannel.size(), channel);
+ fileChannel.transferTo(skipped, fileChannel.size(), channel);
fileChannel.close();
} else {
int i = 0;
Modified:
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/LazySkippingInputStream.java
URL:
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/LazySkippingInputStream.java?rev=1036571&r1=1036570&r2=1036571&view=diff
==============================================================================
---
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/LazySkippingInputStream.java
(original)
+++
james/imap/trunk/store/src/main/java/org/apache/james/mailbox/store/streaming/LazySkippingInputStream.java
Thu Nov 18 18:50:47 2010
@@ -97,5 +97,13 @@ public class LazySkippingInputStream ext
skipped = true;
}
}
+
+ public InputStream getWrapped() throws IOException {
+ return in;
+ }
+
+ public long getSkippedBytes() {
+ return skipBytes;
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]