public static void await(NioXnio nioXnio, SelectableChannel channel, int op, long time, TimeUnit unit) throws IOException { if (time <= 0) { await(nioXnio, channel, op); return; } Xnio.checkBlockingAllowed(); final Selector selector = nioXnio.getSelector(); final SelectionKey selectionKey; try { selectionKey = channel.register(selector, op); } catch (ClosedChannelException e) { return; } long timeoutInMillis = unit.toMillis(time); selector.select(timeoutInMillis == 0 ? 1: timeoutInMillis); selector.selectedKeys().clear(); if (Thread.currentThread().isInterrupted()) { throw log.interruptedIO(); } selectionKey.cancel(); selector.selectNow(); } }
public static void await(NioXnio nioXnio, SelectableChannel channel, int op) throws IOException { if (NioXnio.IS_HP_UX) { // HP-UX has buggy write wakeup semantics await(nioXnio, channel, op, 1, TimeUnit.SECONDS); return; } Xnio.checkBlockingAllowed(); final Selector selector = nioXnio.getSelector(); final SelectionKey selectionKey; try { selectionKey = channel.register(selector, op); } catch (ClosedChannelException e) { return; } selector.select(); selector.selectedKeys().clear(); if (Thread.currentThread().isInterrupted()) { throw log.interruptedIO(); } selectionKey.cancel(); selector.selectNow(); }
Xnio.checkBlockingAllowed(); try { wait();
public void awaitWritable(final long time, final TimeUnit timeUnit) throws IOException { Xnio.checkBlockingAllowed(); SelectorUtils.await((NioXnio)getWorker().getXnio(), sinkChannel, SelectionKey.OP_WRITE, time, timeUnit); }
public void awaitReadable(final long time, final TimeUnit timeUnit) throws IOException { Xnio.checkBlockingAllowed(); SelectorUtils.await((NioXnio)getWorker().getXnio(), sourceChannel, SelectionKey.OP_READ, time, timeUnit); }
public void awaitWritable() throws IOException { Xnio.checkBlockingAllowed(); SelectorUtils.await((NioXnio)getWorker().getXnio(), sinkChannel, SelectionKey.OP_WRITE); }
public void awaitReadable(final long time, final TimeUnit timeUnit) throws IOException { Xnio.checkBlockingAllowed(); SelectorUtils.await((NioXnio)getWorker().getXnio(), socketChannel, SelectionKey.OP_READ, time, timeUnit); }
Xnio.checkBlockingAllowed(); try { wait();
public void awaitReadable() throws IOException { Xnio.checkBlockingAllowed(); SelectorUtils.await((NioXnio)getWorker().getXnio(), sourceChannel, SelectionKey.OP_READ); }
public void awaitReadable() throws IOException { Xnio.checkBlockingAllowed(); SelectorUtils.await((NioXnio)getWorker().getXnio(), socketChannel, SelectionKey.OP_READ); }
Xnio.checkBlockingAllowed(); try { wait();
public void awaitWritable(final long time, final TimeUnit timeUnit) throws IOException { Xnio.checkBlockingAllowed(); if (isWriteShutdown()) { return; } SelectorUtils.await((NioXnio)getWorker().getXnio(), socketChannel, SelectionKey.OP_WRITE, time, timeUnit); }
return state.getStatus(); Xnio.checkBlockingAllowed(); if (Thread.interrupted()) throw new InterruptedException(); State<T> withWaiter = state.withWaiter(thread);
public void awaitWritable() throws IOException { Xnio.checkBlockingAllowed(); if (isWriteShutdown()) { return; } SelectorUtils.await((NioXnio)getWorker().getXnio(), socketChannel, SelectionKey.OP_WRITE); }
return state.getStatus(); Xnio.checkBlockingAllowed(); State<T> withWaiter = state.withWaiter(thread); if (compareAndSetState(state, withWaiter)) {
/** * {@inheritDoc} */ public Status awaitInterruptibly() throws InterruptedException { final Thread thread = Thread.currentThread(); State<T> state; for (;;) { state = getState(); if (state.getStatus() != Status.WAITING) { return state.getStatus(); } Xnio.checkBlockingAllowed(); if (Thread.interrupted()) throw new InterruptedException(); State<T> withWaiter = state.withWaiter(thread); if (compareAndSetState(state, withWaiter)) { do { LockSupport.park(this); if (Thread.interrupted()) throw new InterruptedException(); state = getState(); } while (state.getStatus() == Status.WAITING); return state.getStatus(); } // retry } }
/** * {@inheritDoc} */ public Status await() { final Thread thread = Thread.currentThread(); State<T> state; for (;;) { state = getState(); if (state.getStatus() != Status.WAITING) { return state.getStatus(); } Xnio.checkBlockingAllowed(); State<T> withWaiter = state.withWaiter(thread); if (compareAndSetState(state, withWaiter)) { boolean intr = Thread.interrupted(); try { do { LockSupport.park(this); if (Thread.interrupted()) intr = true; state = getState(); } while (state.getStatus() == Status.WAITING); return state.getStatus(); } finally { if (intr) thread.interrupt(); } } // retry } }
public void awaitWritable(final long time, final TimeUnit timeUnit) throws IOException { Xnio.checkBlockingAllowed(); if (isWriteShutdown()) { return; } SelectorUtils.await((NioXnio)getWorker().getXnio(), socketChannel, SelectionKey.OP_WRITE, time, timeUnit); }
public void awaitWritable(final long time, final TimeUnit timeUnit) throws IOException { Xnio.checkBlockingAllowed(); if (isWriteShutdown()) { return; } SelectorUtils.await((NioXnio)getWorker().getXnio(), socketChannel, SelectionKey.OP_WRITE, time, timeUnit); }
public void awaitWritable() throws IOException { Xnio.checkBlockingAllowed(); if (isWriteShutdown()) { return; } SelectorUtils.await((NioXnio)getWorker().getXnio(), socketChannel, SelectionKey.OP_WRITE); }