@Override public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { ParcelFileDescriptor[] pipe=null; try { pipe=ParcelFileDescriptor.createPipe(); AssetManager assets=getContext().getAssets(); new TransferThread(assets.open(uri.getLastPathSegment()), new AutoCloseOutputStream(pipe[1])).start(); } catch (IOException e) { Log.e(getClass().getSimpleName(), "Exception opening pipe", e); throw new FileNotFoundException("Could not open pipe for: " + uri.toString()); } return(pipe[0]); }
private FileDescriptor getStreamFd() { ParcelFileDescriptor[] pipe=null; try { pipe=ParcelFileDescriptor.createPipe(); new TransferThread(new AutoCloseInputStream(pipe[0]), new FileOutputStream(getOutputFile())).start(); } catch (IOException e) { Log.e(getClass().getSimpleName(), "Exception opening pipe", e); } return(pipe[1].getFileDescriptor()); }
@Override public ParcelFileDescriptor openDocument(String documentId, String mode, CancellationSignal signal) throws FileNotFoundException { ParcelFileDescriptor[] pipe=null; try { pipe=ParcelFileDescriptor.createPipe(); AssetManager assets=getContext().getAssets(); new TransferThread(assets.open(documentId), new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1])).start(); } catch (IOException e) { Log.e(getClass().getSimpleName(), "Exception opening pipe", e); throw new FileNotFoundException("Could not open pipe for: " + documentId); } return(pipe[0]); }
public ParcelFileDescriptor startPumpThread() throws IOException { if (writeSidePfd != null) { throw new IllegalStateException("startPumpThread() must only be called once!"); } ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); ParcelFileDescriptor readSidePfd = pipe[0]; writeSidePfd = pipe[1]; new DataSourceTransferThread(this, new ParcelFileDescriptor.AutoCloseOutputStream(writeSidePfd)).start(); return readSidePfd; }
public static ParcelFileDescriptor pipeFrom(InputStream inputStream) throws IOException { ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); ParcelFileDescriptor readSide = pipe[0]; ParcelFileDescriptor writeSide = pipe[1]; new TransferThread(inputStream, new ParcelFileDescriptor.AutoCloseOutputStream(writeSide)) .start(); return readSide; }
@Test public void testCreatePipe() throws IOException { ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); ParcelFileDescriptor readSide = pipe[0]; ParcelFileDescriptor writeSide = pipe[1]; byte[] dataToWrite = new byte[] {0, 1, 2, 3, 4}; ParcelFileDescriptor.AutoCloseInputStream inputStream = new ParcelFileDescriptor.AutoCloseInputStream(readSide); ParcelFileDescriptor.AutoCloseOutputStream outputStream = new ParcelFileDescriptor.AutoCloseOutputStream(writeSide); outputStream.write(dataToWrite); byte[] read = new byte[dataToWrite.length]; int byteCount = inputStream.read(read); inputStream.close(); outputStream.close(); assertThat(byteCount).isEqualTo(dataToWrite.length); assertThat(read).isEqualTo(dataToWrite); }
private ParcelFileDescriptor bitmapToFd(Bitmap bmp) { ParcelFileDescriptor[] pair; try { // Use a pipe as a virtual in-memory ParcelFileDescriptor pair = ParcelFileDescriptor.createPipe(); } catch (IOException e) { return null; } FileOutputStream os = new FileOutputStream(pair[1].getFileDescriptor()); // Send the bitmap into the pipe in another thread, so that we can return the // reading fd to the Documents UI before we finish sending the Bitmap. new Thread(() -> { bmp.compress(Bitmap.CompressFormat.PNG, 100, os); try { os.flush(); os.close(); } catch (IOException e) { // ... } bmp.recycle(); }).start(); return pair[0]; } }
@Nullable @Override public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode) throws FileNotFoundException { try { ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); new DownloadThread( new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]), AppDatabase.getInstance(getContext()) ).start(); return pipe[0]; } catch (IOException e) { throw new FileNotFoundException("Could not open pipe"); } }
public static ParcelFileDescriptor pipeFrom(InputStream inputStream) throws IOException { final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); final OutputStream output = new ParcelFileDescriptor.AutoCloseOutputStream(pipe[1]); new TransferThread(inputStream, output).start(); return pipe[0]; }
@SuppressWarnings("unused") public static ParcelFileDescriptor pipeTo(OutputStream outputStream) throws IOException { final ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); final InputStream input = new ParcelFileDescriptor.AutoCloseInputStream(pipe[0]); new TransferThread(input, outputStream).start(); return pipe[1]; }
InputStream inputStream = null; try { pipe = ParcelFileDescriptor.createPipe(); inputStream = mZipFile.getInputStream(entry); } catch (IOException e) {
protected void createSockets() throws IOException { if (sPipeApi == PIPE_API_LS) { final String LOCAL_ADDR = "net.majorkernelpanic.streaming-"; for (int i=0;i<10;i++) { try { mSocketId = new Random().nextInt(); mLss = new LocalServerSocket(LOCAL_ADDR+mSocketId); break; } catch (IOException e1) {} } mReceiver = new LocalSocket(); mReceiver.connect( new LocalSocketAddress(LOCAL_ADDR+mSocketId)); mReceiver.setReceiveBufferSize(500000); mReceiver.setSoTimeout(3000); mSender = mLss.accept(); mSender.setSendBufferSize(500000); } else { Log.e(TAG, "parcelFileDescriptors createPipe version = Lollipop"); mParcelFileDescriptors = ParcelFileDescriptor.createPipe(); mParcelRead = new ParcelFileDescriptor(mParcelFileDescriptors[0]); mParcelWrite = new ParcelFileDescriptor(mParcelFileDescriptors[1]); } }
protected void createSockets() throws IOException { if (sPipeApi == PIPE_API_LS) { final String LOCAL_ADDR = "net.majorkernelpanic.streaming-"; for (int i=0;i<10;i++) { try { mSocketId = new Random().nextInt(); mLss = new LocalServerSocket(LOCAL_ADDR+mSocketId); break; } catch (IOException e1) {} } mReceiver = new LocalSocket(); mReceiver.connect( new LocalSocketAddress(LOCAL_ADDR+mSocketId)); mReceiver.setReceiveBufferSize(500000); mReceiver.setSoTimeout(3000); mSender = mLss.accept(); mSender.setSendBufferSize(500000); } else { Log.e(TAG, "parcelFileDescriptors createPipe version = Lollipop"); mParcelFileDescriptors = ParcelFileDescriptor.createPipe(); mParcelRead = new ParcelFileDescriptor(mParcelFileDescriptors[0]); mParcelWrite = new ParcelFileDescriptor(mParcelFileDescriptors[1]); } }