/* (non-Javadoc) @see java.util.Queue#poll() */ @Override public byte[] poll() { byte[] data = null; final int lim = rcvbuffer.length; if (rcvbuffoff == lim) { /* get more data */ final InputStream in = rcvin; int off = 0; while (off < lim) { try { off += in.read(rcvbuffer, off, lim - off); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("Error reading from inputstream", e); } } rcvbuffoff = 0; } // final int buffidx = DataCodec.readInt(rcvbuffer, rcvbuffoff); final int buffidx = DataCodec.readShort(rcvbuffer, rcvbuffoff); // rcvbuffoff +=DataCodec.INTEGER_BYTES; rcvbuffoff += DataCodec.SHORT_BYTES; if (buffidx != rbuffidx) { rbuffers[rbuffidx].clear(); rbuffidx = buffidx; } // final int dlen = DataCodec.readInt(rcvbuffer, rcvbuffoff); final int dlen = DataCodec.readShort(rcvbuffer, rcvbuffoff); // rcvbuffoff +=DataCodec.INTEGER_BYTES; rcvbuffoff += DataCodec.SHORT_BYTES; data = new byte[dlen]; rbuffers[buffidx].get(data); return data; }