Loading tests/DumpRenderTree2/src/com/android/dumprendertree2/forwarder/ConnectionHandler.java +22 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,10 @@ public class ConnectionHandler { private static final String LOG_TAG = "ConnectionHandler"; public static interface OnFinishedCallback { public void onFinished(); } private class SocketPipeThread extends Thread { private Socket mInSocket, mOutSocket; Loading Loading @@ -69,6 +73,9 @@ public class ConnectionHandler { break; } } ConnectionHandler.this.stop(); mOnFinishedCallback.onFinished(); } @Override Loading @@ -80,6 +87,8 @@ public class ConnectionHandler { private Socket mFromSocket, mToSocket; private SocketPipeThread mFromToPipe, mToFromPipe; private OnFinishedCallback mOnFinishedCallback; public ConnectionHandler(Socket fromSocket, Socket toSocket) { mFromSocket = fromSocket; mToSocket = toSocket; Loading @@ -87,6 +96,10 @@ public class ConnectionHandler { mToFromPipe = new SocketPipeThread(mToSocket, mFromSocket); } public void registerOnConnectionHandlerFinishedCallback(OnFinishedCallback callback) { mOnFinishedCallback = callback; } public void start() { mFromToPipe.start(); mToFromPipe.start(); Loading @@ -102,17 +115,23 @@ public class ConnectionHandler { synchronized (mToFromPipe) { /** This will stop the while loop in the run method */ try { if (!socket.isInputShutdown()) { socket.shutdownInput(); } } catch (IOException e) { Log.e(LOG_TAG, "mFromToPipe=" + mFromToPipe + " mToFromPipe=" + mToFromPipe, e); } try { if (!socket.isOutputShutdown()) { socket.shutdownOutput(); } } catch (IOException e) { Log.e(LOG_TAG, "mFromToPipe=" + mFromToPipe + " mToFromPipe=" + mToFromPipe, e); } try { if (!socket.isClosed()) { socket.close(); } } catch (IOException e) { Log.e(LOG_TAG, "mFromToPipe=" + mFromToPipe + " mToFromPipe=" + mToFromPipe, e); } Loading tests/DumpRenderTree2/src/com/android/dumprendertree2/forwarder/Forwarder.java +26 −3 Original line number Diff line number Diff line Loading @@ -92,14 +92,37 @@ public class Forwarder extends Thread { continue; } ConnectionHandler forwarder = new ConnectionHandler(localSocket, remoteSocket); mConnectionHandlers.add(forwarder); forwarder.start(); final ConnectionHandler connectionHandler = new ConnectionHandler(localSocket, remoteSocket); /** * We have to close the sockets after the ConnectionHandler finishes, so we * don't get "Too may open files" exception. We also remove the ConnectionHandler * from the collection to avoid memory issues. * */ ConnectionHandler.OnFinishedCallback callback = new ConnectionHandler.OnFinishedCallback() { @Override public void onFinished() { removeConncetionHandler(connectionHandler); } }; connectionHandler.registerOnConnectionHandlerFinishedCallback(callback); mConnectionHandlers.add(connectionHandler); connectionHandler.start(); } } } private synchronized void removeConncetionHandler(ConnectionHandler connectionHandler) { if (mConnectionHandlers.remove(connectionHandler)) { Log.d(LOG_TAG, "removeConnectionHandler(): removed"); } else { Log.d(LOG_TAG, "removeConnectionHandler(): not in the collection"); } } public void finish() { try { mServerSocket.close(); Loading Loading
tests/DumpRenderTree2/src/com/android/dumprendertree2/forwarder/ConnectionHandler.java +22 −3 Original line number Diff line number Diff line Loading @@ -32,6 +32,10 @@ public class ConnectionHandler { private static final String LOG_TAG = "ConnectionHandler"; public static interface OnFinishedCallback { public void onFinished(); } private class SocketPipeThread extends Thread { private Socket mInSocket, mOutSocket; Loading Loading @@ -69,6 +73,9 @@ public class ConnectionHandler { break; } } ConnectionHandler.this.stop(); mOnFinishedCallback.onFinished(); } @Override Loading @@ -80,6 +87,8 @@ public class ConnectionHandler { private Socket mFromSocket, mToSocket; private SocketPipeThread mFromToPipe, mToFromPipe; private OnFinishedCallback mOnFinishedCallback; public ConnectionHandler(Socket fromSocket, Socket toSocket) { mFromSocket = fromSocket; mToSocket = toSocket; Loading @@ -87,6 +96,10 @@ public class ConnectionHandler { mToFromPipe = new SocketPipeThread(mToSocket, mFromSocket); } public void registerOnConnectionHandlerFinishedCallback(OnFinishedCallback callback) { mOnFinishedCallback = callback; } public void start() { mFromToPipe.start(); mToFromPipe.start(); Loading @@ -102,17 +115,23 @@ public class ConnectionHandler { synchronized (mToFromPipe) { /** This will stop the while loop in the run method */ try { if (!socket.isInputShutdown()) { socket.shutdownInput(); } } catch (IOException e) { Log.e(LOG_TAG, "mFromToPipe=" + mFromToPipe + " mToFromPipe=" + mToFromPipe, e); } try { if (!socket.isOutputShutdown()) { socket.shutdownOutput(); } } catch (IOException e) { Log.e(LOG_TAG, "mFromToPipe=" + mFromToPipe + " mToFromPipe=" + mToFromPipe, e); } try { if (!socket.isClosed()) { socket.close(); } } catch (IOException e) { Log.e(LOG_TAG, "mFromToPipe=" + mFromToPipe + " mToFromPipe=" + mToFromPipe, e); } Loading
tests/DumpRenderTree2/src/com/android/dumprendertree2/forwarder/Forwarder.java +26 −3 Original line number Diff line number Diff line Loading @@ -92,14 +92,37 @@ public class Forwarder extends Thread { continue; } ConnectionHandler forwarder = new ConnectionHandler(localSocket, remoteSocket); mConnectionHandlers.add(forwarder); forwarder.start(); final ConnectionHandler connectionHandler = new ConnectionHandler(localSocket, remoteSocket); /** * We have to close the sockets after the ConnectionHandler finishes, so we * don't get "Too may open files" exception. We also remove the ConnectionHandler * from the collection to avoid memory issues. * */ ConnectionHandler.OnFinishedCallback callback = new ConnectionHandler.OnFinishedCallback() { @Override public void onFinished() { removeConncetionHandler(connectionHandler); } }; connectionHandler.registerOnConnectionHandlerFinishedCallback(callback); mConnectionHandlers.add(connectionHandler); connectionHandler.start(); } } } private synchronized void removeConncetionHandler(ConnectionHandler connectionHandler) { if (mConnectionHandlers.remove(connectionHandler)) { Log.d(LOG_TAG, "removeConnectionHandler(): removed"); } else { Log.d(LOG_TAG, "removeConnectionHandler(): not in the collection"); } } public void finish() { try { mServerSocket.close(); Loading