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.

Reply via email to