public void run() { StringBuffer data = new StringBuffer(); Print.logDebug("Client:InputThread started"); while (true) { data.setLength(0); boolean timeout = false; try { if (this.readTimeout > 0L) { this.socket.setSoTimeout((int) this.readTimeout); } ClientSocketThread.socketReadLine(this.socket, -1, data); } catch (InterruptedIOException ee) { // SocketTimeoutException ee) { // error("Read interrupted (timeout) ..."); if (getRunStatus() != THREAD_RUNNING) { break; } timeout = true; // continue; } catch (Throwable t) { Print.logError("Client:InputThread - " + t); t.printStackTrace(); break; } if (!timeout || (data.length() > 0)) { ClientSocketThread.this.handleMessage(data.toString()); } } synchronized (this.threadLock) { this.isRunning = false; Print.logDebug("Client:InputThread stopped"); this.threadLock.notify(); } }
/** * ** Reads a line from the socket input stream ** @param maxLen The maximum length of of the line * to read ** @param sb The string buffer to use ** @throws IOException if an error occurs or the * server has stopped */ public String socketReadLine(int maxLen, StringBuffer sb) throws IOException { return ClientSocketThread.socketReadLine(this.socket, maxLen, sb); }
/** * ** Reads a line from the socket input stream ** @param maxLen The maximum length of the line to * read ** @throws IOException if an error occurs or the server has stopped */ public String socketReadLine(int maxLen) throws IOException { return ClientSocketThread.socketReadLine(this.socket, maxLen, null); }