Merge "FileBridge: use a ByteBuffer for the temp buffer" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-06-25 21:25:40 +00:00
committed by Android (Google) Code Review

View File

@@ -32,6 +32,7 @@ import libcore.io.Streams;
import java.io.FileDescriptor;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
/**
@@ -95,9 +96,11 @@ public class FileBridge extends Thread {
@Override
public void run() {
final byte[] temp = new byte[8192];
final ByteBuffer tempBuffer = ByteBuffer.allocateDirect(8192);
final byte[] temp = tempBuffer.hasArray() ? tempBuffer.array() : new byte[8192];
try {
while (IoBridge.read(mServer.getFileDescriptor(), temp, 0, MSG_LENGTH) == MSG_LENGTH) {
while (IoBridge.read(mServer.getFileDescriptor(), temp,
0, MSG_LENGTH) == MSG_LENGTH) {
final int cmd = Memory.peekInt(temp, 0, ByteOrder.BIG_ENDIAN);
if (cmd == CMD_WRITE) {
// Shuttle data into local file
@@ -138,7 +141,10 @@ public class FileBridge extends Thread {
public static class FileBridgeOutputStream extends OutputStream {
private final ParcelFileDescriptor mClientPfd;
private final FileDescriptor mClient;
private final byte[] mTemp = new byte[MSG_LENGTH];
private final ByteBuffer mTempBuffer = ByteBuffer.allocateDirect(MSG_LENGTH);
private final byte[] mTemp = mTempBuffer.hasArray()
? mTempBuffer.array()
: new byte[MSG_LENGTH];
public FileBridgeOutputStream(ParcelFileDescriptor clientPfd) {
mClientPfd = clientPfd;