public long read(final ByteBuffer[] dsts, final int offs, final int len) throws IOException { if (allAreSet(state, READ_SHUTDOWN)) { return -1; } long res = Native.readScatter(fd, dsts, offs, len); if (res <= 0) state &= ~READ_READY; checkReadTimeout(res > 0); return res; }