Exemple #1
0
  /* (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;
  }