assertPreparedAndNotSealed("openWrite"); bridge = new FileBridge(); mBridges.add(bridge); Os.lseek(targetFd, offsetBytes, OsConstants.SEEK_SET); bridge.setTargetFile(targetFd); bridge.start(); return ParcelFileDescriptor.dup(bridge.getClientSocket());
public void forceClose() { closeQuietly(mTarget); closeQuietly(mServer); closeQuietly(mClient); mClosed = true; }
final byte[] temp = new byte[8192]; try { while (read(mServer, temp, 0, MSG_LENGTH) == MSG_LENGTH) { final int cmd = FileUtils.peekInt(temp, 0, ByteOrder.BIG_ENDIAN); if (cmd == CMD_WRITE) { int n = read(mServer, temp, 0, Math.min(temp.length, len)); if (n == -1) { throw new IOException( "Unexpected EOF; still expected " + len + " bytes"); write(mTarget, temp, 0, n); len -= n; write(mServer, temp, 0, MSG_LENGTH); Os.close(mTarget); mClosed = true; write(mServer, temp, 0, MSG_LENGTH); break; Log.wtf(TAG, "Failed during bridge", e); } finally { forceClose();
private void destroyInternal() { synchronized (mLock) { mSealed = true; mDestroyed = true; // Force shut down all bridges for (FileBridge bridge : mBridges) { bridge.forceClose(); } } if (stageDir != null) { FileUtils.deleteDir(stageDir.getAbsolutePath()); } }
if (!bridge.isClosed()) { throw new SecurityException("Files still open");
private void destroyInternal() { synchronized (mLock) { mSealed = true; mDestroyed = true; // Force shut down all bridges for (FileBridge bridge : mBridges) { bridge.forceClose(); } } if (stageDir != null) { FileUtils.deleteDir(stageDir.getAbsolutePath()); } }
if (!bridge.isClosed()) { throw new SecurityException("Files still open");
assertPreparedAndNotSealed("openWrite"); bridge = new FileBridge(); mBridges.add(bridge); Os.lseek(targetFd, offsetBytes, OsConstants.SEEK_SET); bridge.setTargetFile(targetFd); bridge.start(); return ParcelFileDescriptor.dup(bridge.getClientSocket());
final byte[] temp = new byte[8192]; try { while (read(mServer, temp, 0, MSG_LENGTH) == MSG_LENGTH) { final int cmd = FileUtils.peekInt(temp, 0, ByteOrder.BIG_ENDIAN); if (cmd == CMD_WRITE) { int n = read(mServer, temp, 0, Math.min(temp.length, len)); if (n == -1) { throw new IOException( "Unexpected EOF; still expected " + len + " bytes"); write(mTarget, temp, 0, n); len -= n; write(mServer, temp, 0, MSG_LENGTH); Os.close(mTarget); mClosed = true; write(mServer, temp, 0, MSG_LENGTH); break; Log.wtf(TAG, "Failed during bridge", e); } finally { forceClose();
public void forceClose() { closeQuietly(mTarget); closeQuietly(mServer); closeQuietly(mClient); mClosed = true; }
private void destroyInternal() { synchronized (mLock) { mSealed = true; mDestroyed = true; // Force shut down all bridges for (FileBridge bridge : mBridges) { bridge.forceClose(); } } if (stageDir != null) { FileUtils.deleteDir(stageDir.getAbsolutePath()); } }
if (!bridge.isClosed()) { throw new SecurityException("Files still open");
assertPreparedAndNotSealed("openWrite"); bridge = new FileBridge(); mBridges.add(bridge); Os.lseek(targetFd, offsetBytes, OsConstants.SEEK_SET); bridge.setTargetFile(targetFd); bridge.start(); return ParcelFileDescriptor.dup(bridge.getClientSocket());
final byte[] temp = new byte[8192]; try { while (read(mServer, temp, 0, MSG_LENGTH) == MSG_LENGTH) { final int cmd = FileUtils.peekInt(temp, 0, ByteOrder.BIG_ENDIAN); if (cmd == CMD_WRITE) { int n = read(mServer, temp, 0, Math.min(temp.length, len)); if (n == -1) { throw new IOException( "Unexpected EOF; still expected " + len + " bytes"); write(mTarget, temp, 0, n); len -= n; write(mServer, temp, 0, MSG_LENGTH); Os.close(mTarget); mClosed = true; write(mServer, temp, 0, MSG_LENGTH); break; Log.wtf(TAG, "Failed during bridge", e); } finally { forceClose();
public void forceClose() { closeQuietly(mTarget); closeQuietly(mServer); closeQuietly(mClient); mClosed = true; }