Fields Summary |
---|
public static final int | VIEW_SERVER_DEFAULT_PORTThe default port used to start view servers. |
private static final int | VIEW_SERVER_MAX_CONNECTIONS |
private static final String | LOG_TAG |
private static final String | VALUE_PROTOCOL_VERSION |
private static final String | VALUE_SERVER_VERSION |
private static final String | COMMAND_PROTOCOL_VERSION |
private static final String | COMMAND_SERVER_VERSION |
private static final String | COMMAND_WINDOW_MANAGER_LIST |
private static final String | COMMAND_WINDOW_MANAGER_AUTOLIST |
private static final String | COMMAND_WINDOW_MANAGER_GET_FOCUS |
private ServerSocket | mServer |
private Thread | mThread |
private final WindowManagerService | mWindowManager |
private final int | mPort |
private ExecutorService | mThreadPool |
Methods Summary |
---|
boolean | isRunning()Indicates whether the server is currently running.
return mThread != null && mThread.isAlive();
|
public void | run()Main server loop.
while (Thread.currentThread() == mThread) {
// Any uncaught exception will crash the system process
try {
Socket client = mServer.accept();
if (mThreadPool != null) {
mThreadPool.submit(new ViewServerWorker(client));
} else {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} catch (Exception e) {
Slog.w(LOG_TAG, "Connection error: ", e);
}
}
|
boolean | start()Starts the server.
if (mThread != null) {
return false;
}
mServer = new ServerSocket(mPort, VIEW_SERVER_MAX_CONNECTIONS, InetAddress.getLocalHost());
mThread = new Thread(this, "Remote View Server [port=" + mPort + "]");
mThreadPool = Executors.newFixedThreadPool(VIEW_SERVER_MAX_CONNECTIONS);
mThread.start();
return true;
|
boolean | stop()Stops the server.
if (mThread != null) {
mThread.interrupt();
if (mThreadPool != null) {
try {
mThreadPool.shutdownNow();
} catch (SecurityException e) {
Slog.w(LOG_TAG, "Could not stop all view server threads");
}
}
mThreadPool = null;
mThread = null;
try {
mServer.close();
mServer = null;
return true;
} catch (IOException e) {
Slog.w(LOG_TAG, "Could not close the view server");
}
}
return false;
|
private static boolean | writeValue(java.net.Socket client, java.lang.String value)
boolean result;
BufferedWriter out = null;
try {
OutputStream clientStream = client.getOutputStream();
out = new BufferedWriter(new OutputStreamWriter(clientStream), 8 * 1024);
out.write(value);
out.write("\n");
out.flush();
result = true;
} catch (Exception e) {
result = false;
} finally {
if (out != null) {
try {
out.close();
} catch (IOException e) {
result = false;
}
}
}
return result;
|