mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
UP-4484 Improve performance of MessageBusImpl processing
This commit is contained in:
@@ -23,14 +23,44 @@ import com.intellij.util.messages.impl.MessageBusImpl;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
public class MessageBusFactory {
|
||||
|
||||
private static final AtomicReference<Impl> ourImpl = new AtomicReference<Impl>(new Impl() {
|
||||
@NotNull
|
||||
@Override
|
||||
public MessageBus newMessageBus(@NotNull Object owner) {
|
||||
return new MessageBusImpl.RootBus(owner);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public MessageBus newMessageBus(@NotNull Object owner, @Nullable MessageBus parentBus) {
|
||||
return parentBus == null ? newMessageBus(owner) : new MessageBusImpl(owner, parentBus);
|
||||
}
|
||||
});
|
||||
|
||||
private MessageBusFactory() {}
|
||||
|
||||
public static MessageBus newMessageBus(@NotNull Object owner) {
|
||||
return new MessageBusImpl.RootBus(owner);
|
||||
return ourImpl.get().newMessageBus(owner);
|
||||
}
|
||||
|
||||
public static MessageBus newMessageBus(@NotNull Object owner, @Nullable MessageBus parentBus) {
|
||||
return parentBus == null ? newMessageBus(owner) : new MessageBusImpl(owner, parentBus);
|
||||
return ourImpl.get().newMessageBus(owner, parentBus);
|
||||
}
|
||||
|
||||
public static void setImpl(@NotNull Impl impl) {
|
||||
ourImpl.set(impl);
|
||||
}
|
||||
|
||||
public interface Impl {
|
||||
|
||||
@NotNull
|
||||
MessageBus newMessageBus(@NotNull Object owner);
|
||||
|
||||
@NotNull
|
||||
MessageBus newMessageBus(@NotNull Object owner, @Nullable MessageBus parentBus);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user