This is an automated email from the ASF dual-hosted git repository. johnnyv pushed a commit to branch 2.1.X in repository https://gitbox.apache.org/repos/asf/mina.git
The following commit(s) were added to refs/heads/2.1.X by this push: new 60b4190 Performance improvement of UDP processing for DIRMINA-1095 60b4190 is described below commit 60b4190162bddc13d35df95a550b079254bfba83 Author: johnnyv <john...@apache.org> AuthorDate: Sat May 4 13:05:29 2019 -0400 Performance improvement of UDP processing for DIRMINA-1095 --- .../transport/socket/nio/NioDatagramAcceptor.java | 49 ++++++++++++---------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java index 420c970..a2f7420 100644 --- a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java +++ b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramAcceptor.java @@ -258,27 +258,34 @@ public final class NioDatagramAcceptor extends AbstractIoAcceptor implements Dat } private void processReadySessions(Set<SelectionKey> handles) { - Iterator<SelectionKey> iterator = handles.iterator(); - - while (iterator.hasNext()) { - SelectionKey key = iterator.next(); - DatagramChannel handle = (DatagramChannel) key.channel(); - iterator.remove(); - - try { - if (key.isValid() && key.isReadable()) { - readHandle(handle); - } - - if (key.isValid() && key.isWritable()) { - for (IoSession session : getManagedSessions().values()) { - scheduleFlush((NioSession) session); - } - } - } catch (Exception e) { - ExceptionMonitor.getInstance().exceptionCaught(e); - } - } + final Iterator<SelectionKey> iterator = handles.iterator(); + + while (iterator.hasNext()) { + try { + final SelectionKey key = iterator.next(); + final DatagramChannel handle = (DatagramChannel) key.channel(); + + if (key.isValid()) { + if (key.isReadable()) { + readHandle(handle); + } + + if (key.isWritable()) { + for (IoSession session : getManagedSessions().values()) { + final NioSession x = (NioSession) session; + if (x.getChannel() == handle) { + scheduleFlush(x); + } + } + } + } + + } catch (Exception e) { + ExceptionMonitor.getInstance().exceptionCaught(e); + } finally { + iterator.remove(); + } + } } private boolean scheduleFlush(NioSession session) {