From b6dd5938ab748f4d3482f58106bd8018f5cf4bb4 Mon Sep 17 00:00:00 2001 From: Norman Maurer Date: Thu, 21 Mar 2013 11:23:40 +0100 Subject: [PATCH] No need to do any deadlock check here --- .../channel/group/ImmediateEventExecutor.java | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 transport/src/main/java/io/netty/channel/group/ImmediateEventExecutor.java diff --git a/transport/src/main/java/io/netty/channel/group/ImmediateEventExecutor.java b/transport/src/main/java/io/netty/channel/group/ImmediateEventExecutor.java new file mode 100644 index 0000000000..6a418445c2 --- /dev/null +++ b/transport/src/main/java/io/netty/channel/group/ImmediateEventExecutor.java @@ -0,0 +1,92 @@ +/* + * Copyright 2013 The Netty Project + * + * The Netty Project licenses this file to you under the Apache License, + * version 2.0 (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ +package io.netty.channel.group; + +import io.netty.util.concurrent.AbstractEventExecutorWithoutScheduler; +import io.netty.util.concurrent.DefaultPromise; +import io.netty.util.concurrent.EventExecutor; +import io.netty.util.concurrent.EventExecutorGroup; +import io.netty.util.concurrent.Promise; + +import java.util.Collections; +import java.util.List; +import java.util.concurrent.TimeUnit; + +final class ImmediateEventExecutor extends AbstractEventExecutorWithoutScheduler { + + @Override + public EventExecutorGroup parent() { + return null; + } + + @Override + public boolean inEventLoop() { + return true; + } + + @Override + public boolean inEventLoop(Thread thread) { + return true; + } + + @Override + public void shutdown() { + } + + @Override + public boolean isShutdown() { + return false; + } + + @Override + public boolean isTerminated() { + return false; + } + + @Override + public boolean awaitTermination(long timeout, TimeUnit unit) { + return false; + } + + @Override + public List shutdownNow() { + return Collections.emptyList(); + } + + @Override + public void execute(Runnable command) { + if (command == null) { + throw new NullPointerException("command"); + } + command.run(); + } + + @Override + public Promise newPromise() { + return new ImmediatePromise(this); + } + + static class ImmediatePromise extends DefaultPromise { + ImmediatePromise(EventExecutor executor) { + super(executor); + } + + @Override + protected void checkDeadLock() { + // No check + } + } +}