rendered paste bodyprivate void runAvaliable() throws IOException
{
boolean firstAvaliable = true;
while (true)
{
int avaliable = waitForAvaliable(firstAvaliable);
if (avaliable == -1)
{
return;
}
if (shutDown)
{
return;
}
avaliableTimeOut = socketTimeout;
firstAvaliable = false;
readFromStream(avaliable);
}
}
private int waitForAvaliable(boolean firstAvaliable) throws IOException
{
long startWait = System.currentTimeMillis();
while (true && !shutDown) //todo: denna ser konstig ut
{
int avaliable = inputStream.available();
if (avaliable > 0)
{
return avaliable;
}
if (System.currentTimeMillis() - startWait >= avaliableTimeOut * 1000)
{
if (firstAvaliable)
{
setAvailableFailed(true);
return -1;
}
else
{
throw new IOException("timeout");
}
}
Logger.log("...");
safeSleep(2000);
}
return -2;
}
private void readFromStream(int available) throws IOException
{
while (!timeout && (available > 0 || available == -1))
{
int b = inputStream.read();
lastReadTime = System.currentTimeMillis();
char c = (char) b;
if (b == -1)
{
break;
}
else if (c == '\n')
{
byteOutputStream.close();
byte[] bytes = byteOutputStream.toByteArray();
byteOutputStream = new ByteArrayOutputStream();
StringBuffer stringBuffer = new StringBuffer();
InputStreamReader inputStreamReader = new InputStreamReader(new ByteArrayInputStream(bytes), ENCODING);
while (true)
{
int t = inputStreamReader.read();
if (t == -1)
{
break;
}
stringBuffer.append((char) t);
}
handleLine(stringBuffer.toString());
}
else
{
byteOutputStream.write(c);
}
if (available > 0)
{
available--;
}
}
}