Commit b29ff0cf by eguven Committed by Oliver Woodman

Make CacheDataSink use ReusableBufferedOutputStream

-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=140010664
parent fa3d129b
...@@ -20,8 +20,8 @@ import com.google.android.exoplayer2.upstream.DataSink; ...@@ -20,8 +20,8 @@ import com.google.android.exoplayer2.upstream.DataSink;
import com.google.android.exoplayer2.upstream.DataSpec; import com.google.android.exoplayer2.upstream.DataSpec;
import com.google.android.exoplayer2.upstream.cache.Cache.CacheException; import com.google.android.exoplayer2.upstream.cache.Cache.CacheException;
import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.ReusableBufferedOutputStream;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.io.BufferedOutputStream;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
...@@ -42,6 +42,7 @@ public final class CacheDataSink implements DataSink { ...@@ -42,6 +42,7 @@ public final class CacheDataSink implements DataSink {
private FileOutputStream underlyingFileOutputStream; private FileOutputStream underlyingFileOutputStream;
private long outputStreamBytesWritten; private long outputStreamBytesWritten;
private long dataSpecBytesWritten; private long dataSpecBytesWritten;
private ReusableBufferedOutputStream bufferedOutputStream;
/** /**
* Thrown when IOException is encountered when writing data into sink. * Thrown when IOException is encountered when writing data into sink.
...@@ -132,9 +133,17 @@ public final class CacheDataSink implements DataSink { ...@@ -132,9 +133,17 @@ public final class CacheDataSink implements DataSink {
file = cache.startFile(dataSpec.key, dataSpec.absoluteStreamPosition + dataSpecBytesWritten, file = cache.startFile(dataSpec.key, dataSpec.absoluteStreamPosition + dataSpecBytesWritten,
Math.min(dataSpec.length - dataSpecBytesWritten, maxCacheFileSize)); Math.min(dataSpec.length - dataSpecBytesWritten, maxCacheFileSize));
underlyingFileOutputStream = new FileOutputStream(file); underlyingFileOutputStream = new FileOutputStream(file);
outputStream = bufferSize > 0 if (bufferSize > 0) {
? new BufferedOutputStream(underlyingFileOutputStream, bufferSize) if (bufferedOutputStream == null) {
: underlyingFileOutputStream; bufferedOutputStream = new ReusableBufferedOutputStream(underlyingFileOutputStream,
bufferSize);
} else {
bufferedOutputStream.reset(underlyingFileOutputStream);
}
outputStream = bufferedOutputStream;
} else {
outputStream = underlyingFileOutputStream;
}
outputStreamBytesWritten = 0; outputStreamBytesWritten = 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment