Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 013c618a authored by Ian Kasprzak's avatar Ian Kasprzak Committed by android-build-merger
Browse files

Merge "Revert "Remove a misleading "flush" function."" am: 9fcf8b7c

am: 783313ac

Change-Id: I5bef9526645613549448022b0c79e832493854d0
parents 80bd973c 783313ac
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -75,4 +75,16 @@ import java.io.OutputStream;
        }
        mSocket.write(b, offset, count);
    }

    /**
     * Wait until the data in sending queue is emptied. A polling version
     * for flush implementation. Use it to ensure the writing data afterwards will
     * be packed in the new RFCOMM frame.
     *
     * @throws IOException if an i/o error occurs.
     * @since Android 4.2.3
     */
    public void flush() throws IOException {
        mSocket.flush();
    }
}
+14 −0
Original line number Diff line number Diff line
@@ -515,6 +515,20 @@ public final class BluetoothSocket implements Closeable {
        return mSocketIS.available();
    }

    /**
     * Wait until the data in sending queue is emptied. A polling version
     * for flush implementation. Used to ensure the writing data afterwards will
     * be packed in new RFCOMM frame.
     *
     * @throws IOException if an i/o error occurs.
     */
    @UnsupportedAppUsage
    /*package*/ void flush() throws IOException {
        if (mSocketOS == null) throw new IOException("flush is called on null OutputStream");
        if (VDBG) Log.d(TAG, "flush: " + mSocketOS);
        mSocketOS.flush();
    }

    /*package*/ int read(byte[] b, int offset, int length) throws IOException {
        int ret = 0;
        if (VDBG) Log.d(TAG, "read in:  " + mSocketIS + " len: " + length);
+34 −0
Original line number Diff line number Diff line
@@ -157,6 +157,40 @@ class LocalSocketImpl
                write_native(b, myFd);
            }
        }

        /**
         * Wait until the data in sending queue is emptied. A polling version
         * for flush implementation.
         * @throws IOException
         *             if an i/o error occurs.
         */
        @Override
        public void flush() throws IOException {
            FileDescriptor myFd = fd;
            if (myFd == null) throw new IOException("socket closed");

            // Loop until the output buffer is empty.
            Int32Ref pending = new Int32Ref(0);
            while (true) {
                try {
                    // See linux/net/unix/af_unix.c
                    Os.ioctlInt(myFd, OsConstants.TIOCOUTQ, pending);
                } catch (ErrnoException e) {
                    throw e.rethrowAsIOException();
                }

                if (pending.value <= 0) {
                    // The output buffer is empty.
                    break;
                }

                try {
                    Thread.sleep(10);
                } catch (InterruptedException ie) {
                    break;
                }
            }
        }
    }

    private native int read_native(FileDescriptor fd) throws IOException;
+4 −0
Original line number Diff line number Diff line
@@ -25,12 +25,15 @@ import android.os.PowerManager;
import android.os.RecoverySystem;
import android.os.RemoteException;
import android.os.SystemProperties;
import android.system.ErrnoException;
import android.system.Os;
import android.util.Slog;

import libcore.io.IoUtils;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

@@ -285,6 +288,7 @@ public final class RecoverySystemService extends SystemService {
                    byte[] cmdUtf8 = command.getBytes("UTF-8");
                    dos.writeInt(cmdUtf8.length);
                    dos.write(cmdUtf8, 0, cmdUtf8.length);
                    dos.flush();
                }

                // Read the status from the socket.
+1 −0
Original line number Diff line number Diff line
@@ -2082,6 +2082,7 @@ public class Vpn {
                    }
                    out.write(0xFF);
                    out.write(0xFF);
                    out.flush();

                    // Wait for End-of-File.
                    InputStream in = mSockets[i].getInputStream();