/** * Invoke a channel listener on a given channel, logging any errors, using the given executor. * * @param executor the executor * @param channel the channel * @param channelListener the channel listener * @param <T> the channel type */ public static <T extends Channel> void invokeChannelListener(Executor executor, T channel, ChannelListener<? super T> channelListener) { try { executor.execute(getChannelListenerTask(channel, channelListener)); } catch (RejectedExecutionException ree) { invokeChannelListener(channel, channelListener); } }
public void resumeWrites() { int oldVal, newVal; do { oldVal = state; if (anyAreSet(oldVal, FLAG_RESUMED | FLAG_CLOSED)) { return; } newVal = oldVal | FLAG_RESUMED; } while (! stateUpdater.compareAndSet(this, oldVal, newVal)); thread.execute(ChannelListeners.getChannelListenerTask(this, writeListener)); }
public void close() throws IOException { final int oldVal = stateUpdater.getAndSet(this, EMPTIED | CLOSED); if (allAreClear(oldVal, CLOSED)) { thread.execute(ChannelListeners.getChannelListenerTask(this, closeListener)); } }
public void shutdownReads() throws IOException { final int oldVal = stateUpdater.getAndSet(this, EMPTIED | CLOSED); if (allAreClear(oldVal, CLOSED)) { thread.execute(ChannelListeners.getChannelListenerTask(this, closeListener)); } }
public void resumeReads() { if (allAreClear(state, FLAG_CLOSED | FLAG_FINISHED)) { delegate.resumeReads(); } else { delegate.getIoThread().execute(ChannelListeners.getChannelListenerTask(this, readListener)); } }
public void wakeupReads() { if (allAreClear(state, FLAG_CLOSED | FLAG_FINISHED)) { delegate.wakeupReads(); } else { delegate.getIoThread().execute(ChannelListeners.getChannelListenerTask(this, readListener)); } }
/** * Open a unidirectional stream pipe. * * @param sourceListener the source open listener * @param sinkListener the sink open listener * @param optionMap the pipe channel configuration * @throws java.io.IOException if the pipe could not be created * @deprecated Users should prefer the simpler {@link #createHalfDuplexPipe()} instead. */ @Deprecated public void createOneWayPipe(ChannelListener<? super StreamSourceChannel> sourceListener, ChannelListener<? super StreamSinkChannel> sinkListener, final OptionMap optionMap) throws IOException { final ChannelPipe<StreamSourceChannel, StreamSinkChannel> pipe = createHalfDuplexPipe(); final StreamSourceChannel left = pipe.getLeftSide(); XnioExecutor leftExec = left.getReadThread(); final StreamSinkChannel right = pipe.getRightSide(); XnioExecutor rightExec = right.getWriteThread(); // not unsafe - http://youtrack.jetbrains.net/issue/IDEA-59290 //noinspection unchecked leftExec.execute(ChannelListeners.getChannelListenerTask(left, sourceListener)); // not unsafe - http://youtrack.jetbrains.net/issue/IDEA-59290 //noinspection unchecked rightExec.execute(ChannelListeners.getChannelListenerTask(right, sinkListener)); }
/** * Open a bidirectional stream pipe. * * @param leftOpenListener the left-hand open listener * @param rightOpenListener the right-hand open listener * @param optionMap the pipe channel configuration * @throws java.io.IOException if the pipe could not be created * @deprecated Users should prefer the simpler {@link #createFullDuplexPipe()} instead. */ @Deprecated public void createPipe(ChannelListener<? super StreamChannel> leftOpenListener, ChannelListener<? super StreamChannel> rightOpenListener, final OptionMap optionMap) throws IOException { final ChannelPipe<StreamChannel, StreamChannel> pipe = createFullDuplexPipe(); final boolean establishWriting = optionMap.get(Options.WORKER_ESTABLISH_WRITING, false); final StreamChannel left = pipe.getLeftSide(); XnioExecutor leftExec = establishWriting ? left.getWriteThread() : left.getReadThread(); final StreamChannel right = pipe.getRightSide(); XnioExecutor rightExec = establishWriting ? right.getWriteThread() : right.getReadThread(); // not unsafe - http://youtrack.jetbrains.net/issue/IDEA-59290 //noinspection unchecked leftExec.execute(ChannelListeners.getChannelListenerTask(left, leftOpenListener)); // not unsafe - http://youtrack.jetbrains.net/issue/IDEA-59290 //noinspection unchecked rightExec.execute(ChannelListeners.getChannelListenerTask(right, rightOpenListener)); }
execute(ChannelListeners.getChannelListenerTask(connection, openListener)); final FinishedIoFuture<StreamConnection> finishedIoFuture = new FinishedIoFuture<StreamConnection>(connection); ok = true;
/** * Invoke a channel listener on a given channel, logging any errors, using the given executor. * * @param executor the executor * @param channel the channel * @param channelListener the channel listener * @param <T> the channel type */ public static <T extends Channel> void invokeChannelListener(Executor executor, T channel, ChannelListener<? super T> channelListener) { try { executor.execute(getChannelListenerTask(channel, channelListener)); } catch (RejectedExecutionException ree) { invokeChannelListener(channel, channelListener); } }
public void resumeWrites() { int oldVal, newVal; do { oldVal = state; if (anyAreSet(oldVal, FLAG_RESUMED | FLAG_CLOSED)) { return; } newVal = oldVal | FLAG_RESUMED; } while (! stateUpdater.compareAndSet(this, oldVal, newVal)); thread.execute(ChannelListeners.getChannelListenerTask(this, writeListener)); }
public void close() throws IOException { final int oldVal = stateUpdater.getAndSet(this, EMPTIED | CLOSED); if (allAreClear(oldVal, CLOSED)) { thread.execute(ChannelListeners.getChannelListenerTask(this, closeListener)); } }
public void shutdownReads() throws IOException { final int oldVal = stateUpdater.getAndSet(this, EMPTIED | CLOSED); if (allAreClear(oldVal, CLOSED)) { thread.execute(ChannelListeners.getChannelListenerTask(this, closeListener)); } }
public void resumeReads() { if (allAreClear(state, FLAG_CLOSED | FLAG_FINISHED)) { delegate.resumeReads(); } else { delegate.getIoThread().execute(ChannelListeners.getChannelListenerTask(this, readListener)); } }
public void wakeupReads() { if (allAreClear(state, FLAG_CLOSED | FLAG_FINISHED)) { delegate.wakeupReads(); } else { delegate.getIoThread().execute(ChannelListeners.getChannelListenerTask(this, readListener)); } }
/** * Open a unidirectional stream pipe. * * @param sourceListener the source open listener * @param sinkListener the sink open listener * @param optionMap the pipe channel configuration * @throws java.io.IOException if the pipe could not be created * @deprecated Users should prefer the simpler {@link #createHalfDuplexPipe()} instead. */ @Deprecated public void createOneWayPipe(ChannelListener<? super StreamSourceChannel> sourceListener, ChannelListener<? super StreamSinkChannel> sinkListener, final OptionMap optionMap) throws IOException { final ChannelPipe<StreamSourceChannel, StreamSinkChannel> pipe = createHalfDuplexPipe(); final StreamSourceChannel left = pipe.getLeftSide(); XnioExecutor leftExec = left.getReadThread(); final StreamSinkChannel right = pipe.getRightSide(); XnioExecutor rightExec = right.getWriteThread(); // not unsafe - http://youtrack.jetbrains.net/issue/IDEA-59290 //noinspection unchecked leftExec.execute(ChannelListeners.getChannelListenerTask(left, sourceListener)); // not unsafe - http://youtrack.jetbrains.net/issue/IDEA-59290 //noinspection unchecked rightExec.execute(ChannelListeners.getChannelListenerTask(right, sinkListener)); }
/** * Open a bidirectional stream pipe. * * @param leftOpenListener the left-hand open listener * @param rightOpenListener the right-hand open listener * @param optionMap the pipe channel configuration * @throws java.io.IOException if the pipe could not be created * @deprecated Users should prefer the simpler {@link #createFullDuplexPipe()} instead. */ @Deprecated public void createPipe(ChannelListener<? super StreamChannel> leftOpenListener, ChannelListener<? super StreamChannel> rightOpenListener, final OptionMap optionMap) throws IOException { final ChannelPipe<StreamChannel, StreamChannel> pipe = createFullDuplexPipe(); final boolean establishWriting = optionMap.get(Options.WORKER_ESTABLISH_WRITING, false); final StreamChannel left = pipe.getLeftSide(); XnioExecutor leftExec = establishWriting ? left.getWriteThread() : left.getReadThread(); final StreamChannel right = pipe.getRightSide(); XnioExecutor rightExec = establishWriting ? right.getWriteThread() : right.getReadThread(); // not unsafe - http://youtrack.jetbrains.net/issue/IDEA-59290 //noinspection unchecked leftExec.execute(ChannelListeners.getChannelListenerTask(left, leftOpenListener)); // not unsafe - http://youtrack.jetbrains.net/issue/IDEA-59290 //noinspection unchecked rightExec.execute(ChannelListeners.getChannelListenerTask(right, rightOpenListener)); }
execute(ChannelListeners.getChannelListenerTask(connection, openListener)); final FinishedIoFuture<StreamConnection> finishedIoFuture = new FinishedIoFuture<StreamConnection>(connection); ok = true;
execute(ChannelListeners.getChannelListenerTask(connection, openListener)); final FinishedIoFuture<StreamConnection> finishedIoFuture = new FinishedIoFuture<StreamConnection>(connection); ok = true;