tree f8047127b59bab8fffe009a040be33cc0e511ec0
parent 3c461bdefedcacab2b6bba59ff7948030871d482
author Miguel <miguelaranda@google.com> 1635173970 +0000
committer Miguel Aranda <miguelaranda@google.com> 1635851564 +0000

OpenJDK 11: Merging in java.nio.channels.Selector and SelectionKey.

This is part of merging upstream changes from OpenJDK 11.28. This CL
merges java.nio.channels.Selector and SelectionKey

There are 2 new APIs added for Selector:
    int select(Consumer<SelectionKey>, long) throws IOException;
    int select(Consumer<SelectionKey>) throws IOException;
    int selectNow(Consumer<SelectionKey>) throws IOException;

And 1 added for SelectionKey:
    int interestOpsAnd(int);
    int interestOpsOr(int);

Tests were added for all of the new APIs.

Test: m droid
Test: atest CtsLibcoreOjTestCases:test.java.nio.channels.Selector.{TestName}
Test: atest CtsLibcoreOjTestCases:test.java.nio.channels.SelectionKey.{TestName}
Change-Id: Ib38b96dfb78074a9ec27a5cbe3711bacec85b828
