int avail = in.available(); if(avail == 0) return false; if(packetType == -1) { packetType = in.read() & 0xff; if(inStreamDecryption != null) packetType = packetType - inStreamDecryption.getNextKey() & 0xff; packetSize = packetSizes[packetType]; avail--; } if(packetSize == -1) { if(avail > 0) { // this is a variable size packet, the next byte containing the length of said packetSize = in.read() & 0xff; avail--; } else return false; } if(avail < packetSize) return false; // packet not completely arrived here yet fillInStream(packetSize);