public IOSelector(SelectorProvider provider) throws IOException { selector = SelectorFactory.openWithRetryFrom(null, provider); registrationQueue = new ConcurrentLinkedQueue<IOChannel>(); } public void run() {
public IOSelector(SelectorProvider provider) throws IOException { selector = SelectorFactory.openWithRetryFrom(null, provider); registrationQueue = new ConcurrentLinkedQueue<IOChannel>(); } public void run() {
public IOSelector(SelectorProvider provider) throws IOException { selector = SelectorFactory.openWithRetryFrom(null, provider); registrationQueue = new ConcurrentLinkedQueue<IOChannel>(); } public void run() {
public IOSelector(SelectorProvider provider) throws IOException { selector = SelectorFactory.openWithRetryFrom(null, provider); registrationQueue = new ConcurrentLinkedQueue<IOChannel>(); } public void run() {
private Selector retrieveFromPool(SelectorProvider provider) throws IOException { List<Selector> providerPool = pool.get(provider); if (providerPool != null && !providerPool.isEmpty()) { return providerPool.remove(providerPool.size() - 1); } return SelectorFactory.openWithRetryFrom(null, provider); }
private Selector retrieveFromPool(SelectorProvider provider) throws IOException { List<Selector> providerPool = pool.get(provider); Selector selector; if (providerPool != null && !providerPool.isEmpty()) { selector = providerPool.remove(providerPool.size() - 1); } else { selector = SelectorFactory.openWithRetryFrom(null, provider); } openSelectors.add(selector); return selector; }
private Selector retrieveFromPool(SelectorProvider provider) throws IOException { List<Selector> providerPool = pool.get(provider); if (providerPool != null && !providerPool.isEmpty()) { return providerPool.remove(providerPool.size() - 1); } return SelectorFactory.openWithRetryFrom(null, provider); }
private Selector retrieveFromPool(SelectorProvider provider) throws IOException { List<Selector> providerPool = pool.get(provider); Selector selector; if (providerPool != null && !providerPool.isEmpty()) { selector = providerPool.remove(providerPool.size() - 1); } else { selector = SelectorFactory.openWithRetryFrom(null, provider); } openSelectors.add(selector); return selector; }
private synchronized Selector getSelector(SelectableChannel channel) throws IOException { return SelectorFactory.openWithRetryFrom(getRuntime(), channel.provider()); }
private synchronized Selector getSelector(SelectableChannel channel) throws IOException { return SelectorFactory.openWithRetryFrom(getRuntime(), channel.provider()); }
private Selector getSelector(ThreadContext context, SelectableChannel channel) throws IOException { Selector selector = selectors.get(channel.provider()); if (selector == null) { selector = SelectorFactory.openWithRetryFrom(context.runtime, channel.provider()); if (selectors.isEmpty()) { selectors = new HashMap<SelectorProvider, Selector>(); } selectors.put(channel.provider(), selector); if (!selector.provider().equals(SelectorProvider.provider())) { // need to create pipe between alt impl selector and native NIO selector Pipe pipe = Pipe.open(); ENXIOSelector enxioSelector = new ENXIOSelector(selector, pipe); if (enxioSelectors.isEmpty()) enxioSelectors = new ArrayList<ENXIOSelector>(); enxioSelectors.add(enxioSelector); pipe.source().configureBlocking(false); pipe.source().register(getSelector(context, pipe.source()), SelectionKey.OP_READ, enxioSelector); } else if (mainSelector == null) { mainSelector = selector; } } return selector; }
private Selector getSelector(ThreadContext context, SelectableChannel channel) throws IOException { Selector selector = selectors.get(channel.provider()); if (selector == null) { selector = SelectorFactory.openWithRetryFrom(context.runtime, channel.provider()); if (selectors.isEmpty()) { selectors = new HashMap<SelectorProvider, Selector>(); } selectors.put(channel.provider(), selector); if (!selector.provider().equals(SelectorProvider.provider())) { // need to create pipe between alt impl selector and native NIO selector Pipe pipe = Pipe.open(); ENXIOSelector enxioSelector = new ENXIOSelector(selector, pipe); if (enxioSelectors.isEmpty()) enxioSelectors = new ArrayList<ENXIOSelector>(); enxioSelectors.add(enxioSelector); pipe.source().configureBlocking(false); pipe.source().register(getSelector(context, pipe.source()), SelectionKey.OP_READ, enxioSelector); } else if (mainSelector == null) { mainSelector = selector; } } return selector; }
private Selector getSelector(ThreadContext context, SelectableChannel channel) throws IOException { Selector selector = selectors.get(channel.provider()); if (selector == null) { selector = SelectorFactory.openWithRetryFrom(context.runtime, channel.provider()); if (selectors.isEmpty()) { selectors = new HashMap<SelectorProvider, Selector>(); } selectors.put(channel.provider(), selector); if (!selector.provider().equals(SelectorProvider.provider())) { // need to create pipe between alt impl selector and native NIO selector Pipe pipe = Pipe.open(); ENXIOSelector enxioSelector = new ENXIOSelector(selector, pipe); if (enxioSelectors.isEmpty()) enxioSelectors = new ArrayList<ENXIOSelector>(); enxioSelectors.add(enxioSelector); pipe.source().configureBlocking(false); pipe.source().register(getSelector(context, pipe.source()), SelectionKey.OP_READ, enxioSelector); } else if (mainSelector == null) { mainSelector = selector; } } return selector; }
private Selector getSelector(ThreadContext context, SelectableChannel channel) throws IOException { Selector selector = selectors.get(channel.provider()); if (selector == null) { selector = SelectorFactory.openWithRetryFrom(context.runtime, channel.provider()); if (selectors.isEmpty()) { selectors = new HashMap<SelectorProvider, Selector>(); } selectors.put(channel.provider(), selector); if (!selector.provider().equals(SelectorProvider.provider())) { // need to create pipe between alt impl selector and native NIO selector Pipe pipe = Pipe.open(); ENXIOSelector enxioSelector = new ENXIOSelector(selector, pipe); if (enxioSelectors.isEmpty()) enxioSelectors = new ArrayList<ENXIOSelector>(); enxioSelectors.add(enxioSelector); pipe.source().configureBlocking(false); pipe.source().register(getSelector(context, pipe.source()), SelectionKey.OP_READ, enxioSelector); } else if (mainSelector == null) { mainSelector = selector; } } return selector; }
public int ready() throws IOException { if (descriptor.getChannel() instanceof SelectableChannel) { int ready_stat = 0; java.nio.channels.Selector sel = SelectorFactory.openWithRetryFrom(null, ((SelectableChannel) descriptor.getChannel()).provider()); SelectableChannel selchan = (SelectableChannel)descriptor.getChannel(); synchronized (selchan.blockingLock()) { boolean is_block = selchan.isBlocking(); try { selchan.configureBlocking(false); selchan.register(sel, java.nio.channels.SelectionKey.OP_READ); ready_stat = sel.selectNow(); sel.close(); } catch (Throwable ex) { } finally { if (sel != null) { try { sel.close(); } catch (Exception e) { } } selchan.configureBlocking(is_block); } } return ready_stat; } else { return newInputStream().available(); } }
public int ready() throws IOException { if (descriptor.getChannel() instanceof SelectableChannel) { int ready_stat = 0; java.nio.channels.Selector sel = SelectorFactory.openWithRetryFrom(null, ((SelectableChannel) descriptor.getChannel()).provider()); SelectableChannel selchan = (SelectableChannel)descriptor.getChannel(); synchronized (selchan.blockingLock()) { boolean is_block = selchan.isBlocking(); try { selchan.configureBlocking(false); selchan.register(sel, java.nio.channels.SelectionKey.OP_READ); ready_stat = sel.selectNow(); sel.close(); } catch (Throwable ex) { } finally { if (sel != null) { try { sel.close(); } catch (Exception e) { } } selchan.configureBlocking(is_block); } } return ready_stat; } else { return newInputStream().available(); } }
public int ready() throws IOException { if (descriptor.getChannel() instanceof SelectableChannel) { int ready_stat = 0; java.nio.channels.Selector sel = SelectorFactory.openWithRetryFrom(null, ((SelectableChannel) descriptor.getChannel()).provider()); SelectableChannel selchan = (SelectableChannel)descriptor.getChannel(); synchronized (selchan.blockingLock()) { boolean is_block = selchan.isBlocking(); try { selchan.configureBlocking(false); selchan.register(sel, java.nio.channels.SelectionKey.OP_READ); ready_stat = sel.selectNow(); sel.close(); } catch (Throwable ex) { } finally { if (sel != null) { try { sel.close(); } catch (Exception e) { } } selchan.configureBlocking(is_block); } } return ready_stat; } else { return newInputStream().available(); } }
public int ready() throws IOException { if (descriptor.getChannel() instanceof SelectableChannel) { int ready_stat = 0; java.nio.channels.Selector sel = SelectorFactory.openWithRetryFrom(null, ((SelectableChannel) descriptor.getChannel()).provider()); SelectableChannel selchan = (SelectableChannel)descriptor.getChannel(); synchronized (selchan.blockingLock()) { boolean is_block = selchan.isBlocking(); try { selchan.configureBlocking(false); selchan.register(sel, java.nio.channels.SelectionKey.OP_READ); ready_stat = sel.selectNow(); sel.close(); } catch (Throwable ex) { } finally { if (sel != null) { try { sel.close(); } catch (Exception e) { } } selchan.configureBlocking(is_block); } } return ready_stat; } else { return newInputStream().available(); } }
@JRubyMethod(name = "accept_nonblock") public IRubyObject accept_nonblock(ThreadContext context) { Ruby runtime = context.runtime; RubyTCPSocket socket = new RubyTCPSocket(runtime, runtime.getClass("TCPSocket")); Selector selector = null; synchronized (ssc.blockingLock()) { boolean oldBlocking = ssc.isBlocking(); try { ssc.configureBlocking(false); selector = SelectorFactory.openWithRetryFrom(runtime, SelectorProvider.provider()); boolean ready = context.getThread().select(this, SelectionKey.OP_ACCEPT, 0); if (!ready) { // no connection immediately accepted, let them try again throw runtime.newErrnoEAGAINError("Resource temporarily unavailable"); } else { // otherwise one key has been selected (ours) so we get the channel and hand it off socket.initSocket(context.runtime, new ChannelDescriptor(ssc.accept(), newModeFlags(runtime, ModeFlags.RDWR))); return socket; } } catch(IOException e) { throw SocketUtils.sockerr(context.runtime, "problem when accepting"); } finally { try { if (selector != null) selector.close(); } catch (Exception e) { } try {ssc.configureBlocking(oldBlocking);} catch (IOException ioe) {} } } }
selector = SelectorFactory.openWithRetryFrom(runtime, SelectorProvider.provider());