Search in sources :

Example 1 with ChannelEventRunnable

use of org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable in project dubbo by alibaba.

the class AllChannelHandler2 method received.

@Override
public void received(Channel channel, Object message) throws RemotingException {
    ExecutorService executor = getPreferredExecutorService(message);
    try {
        Future<?> future = executor.submit(new ChannelEventRunnable(channel, handler, ChannelState.RECEIVED, message));
        long timeout = this.url.getParameter("timeout", 1000) + 90;
        TIME_OUT_TIMER.newTimeout(t -> {
            if (!future.isDone() && (!future.isCancelled())) {
                try {
                    future.cancel(true);
                } catch (Throwable ex) {
                // ignore
                }
            }
        }, timeout, TimeUnit.MILLISECONDS);
    } catch (Throwable t) {
        if (message instanceof Request && t instanceof RejectedExecutionException) {
            sendFeedback(channel, (Request) message, t);
            return;
        }
        throw new ExecutionException(message, channel, getClass() + " error when process received event .", t);
    }
}
Also used : ExecutorService(java.util.concurrent.ExecutorService) Request(org.apache.dubbo.remoting.exchange.Request) ChannelEventRunnable(org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) ExecutionException(org.apache.dubbo.remoting.ExecutionException) RejectedExecutionException(java.util.concurrent.RejectedExecutionException)

Example 2 with ChannelEventRunnable

use of org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable in project dubbo by alibaba.

the class ConnectionOrderedChannelHandler method disconnected.

@Override
public void disconnected(Channel channel) throws RemotingException {
    try {
        checkQueueLength();
        connectionExecutor.execute(new ChannelEventRunnable(channel, handler, ChannelState.DISCONNECTED));
    } catch (Throwable t) {
        throw new ExecutionException("disconnected event", channel, getClass() + " error when process disconnected event .", t);
    }
}
Also used : ChannelEventRunnable(org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) ExecutionException(org.apache.dubbo.remoting.ExecutionException)

Example 3 with ChannelEventRunnable

use of org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable in project dubbo by alibaba.

the class ConnectionOrderedChannelHandler method connected.

@Override
public void connected(Channel channel) throws RemotingException {
    try {
        checkQueueLength();
        connectionExecutor.execute(new ChannelEventRunnable(channel, handler, ChannelState.CONNECTED));
    } catch (Throwable t) {
        throw new ExecutionException("connect event", channel, getClass() + " error when process connected event .", t);
    }
}
Also used : ChannelEventRunnable(org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable) RejectedExecutionException(java.util.concurrent.RejectedExecutionException) ExecutionException(org.apache.dubbo.remoting.ExecutionException)

Aggregations

RejectedExecutionException (java.util.concurrent.RejectedExecutionException)3 ExecutionException (org.apache.dubbo.remoting.ExecutionException)3 ChannelEventRunnable (org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable)3 ExecutorService (java.util.concurrent.ExecutorService)1 Request (org.apache.dubbo.remoting.exchange.Request)1