Thats actually a good idea… Can you open an issue ? I will do a PR.
> On 23 Sep 2016, at 13:23, yuneng xie <[email protected]> wrote: > > i’m wondering is it better to process OP_WRITE first in event loop? > > if the direct buffer runs out, we get a OOM exception when reading data and > OP_WRITE get no chance to be processed. > > “write before read” could release some buffer for OP_READ > > > private static void processSelectedKey(SelectionKey k, AbstractNioChannel ch) > { > final NioUnsafe unsafe = ch.unsafe(); > if (!k.isValid()) { > // close the channel if the key is not valid anymore > unsafe.close(unsafe.voidPromise()); > return; > } > > try { > int readyOps = k.readyOps(); > // Also check for readOps of 0 to workaround possible JDK bug which > may otherwise lead > // to a spin loop > if ((readyOps & (SelectionKey.OP_READ | SelectionKey.OP_ACCEPT)) != 0 > || readyOps == 0) { > unsafe.read(); > if (!ch.isOpen()) { > // Connection already closed - no need to handle write. > return; > } > } > if ((readyOps & SelectionKey.OP_WRITE) != 0) { > // Call forceFlush which will also take care of clear the > OP_WRITE once there is nothing left to write > ch.unsafe().forceFlush(); > } > if ((readyOps & SelectionKey.OP_CONNECT) != 0) { > // remove OP_CONNECT as otherwise Selector.select(..) will always > return without blocking > // See https://github.com/netty/netty/issues/924 > <https://github.com/netty/netty/issues/924> > int ops = k.interestOps(); > ops &= ~SelectionKey.OP_CONNECT; > k.interestOps(ops); > > unsafe.finishConnect(); > } > } catch (CancelledKeyException ignored) { > unsafe.close(unsafe.voidPromise()); > } > > } > > -- > You received this message because you are subscribed to the Google Groups > "Netty discussions" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected] > <mailto:[email protected]>. > To view this discussion on the web visit > https://groups.google.com/d/msgid/netty/CAAkXsNSwkzbCXaEasw7Atsuj7OhBvT86PU7A1X0CHvcav1Gahg%40mail.gmail.com > > <https://groups.google.com/d/msgid/netty/CAAkXsNSwkzbCXaEasw7Atsuj7OhBvT86PU7A1X0CHvcav1Gahg%40mail.gmail.com?utm_medium=email&utm_source=footer>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. -- You received this message because you are subscribed to the Google Groups "Netty discussions" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/netty/4A065427-61D7-4308-B369-86C8437CF360%40googlemail.com. For more options, visit https://groups.google.com/d/optout.
