Loading core/java/android/bluetooth/BluetoothOutputStream.java +12 −0 Original line number Diff line number Diff line Loading @@ -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(); } } core/java/android/bluetooth/BluetoothSocket.java +14 −0 Original line number Diff line number Diff line Loading @@ -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); Loading core/java/android/net/LocalSocketImpl.java +34 −0 Original line number Diff line number Diff line Loading @@ -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; Loading services/core/java/com/android/server/RecoverySystemService.java +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading services/core/java/com/android/server/connectivity/Vpn.java +1 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading
core/java/android/bluetooth/BluetoothOutputStream.java +12 −0 Original line number Diff line number Diff line Loading @@ -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(); } }
core/java/android/bluetooth/BluetoothSocket.java +14 −0 Original line number Diff line number Diff line Loading @@ -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); Loading
core/java/android/net/LocalSocketImpl.java +34 −0 Original line number Diff line number Diff line Loading @@ -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; Loading
services/core/java/com/android/server/RecoverySystemService.java +4 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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. Loading
services/core/java/com/android/server/connectivity/Vpn.java +1 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading