package org.threadly.concurrent.wrapper.interceptor; import java.util.ArrayList; import java.util.List; import org.threadly.concurrent.PriorityScheduler; import org.threadly.concurrent.SchedulerServiceInterfaceTest; @SuppressWarnings("javadoc") public class SchedulerServiceTaskInterceptorInterfaceTest extends SchedulerServiceInterfaceTest { @Override protected SchedulerServiceFactory getSchedulerServiceFactory() { return new SchedulerServiceTaskInterceptorFactory(); } @Override protected boolean isSingleThreaded() { return false; } private static class SchedulerServiceTaskInterceptorFactory implements SchedulerServiceFactory { private List<PriorityScheduler> schedulers = new ArrayList<>(1); @Override public SchedulerServiceTaskInterceptor makeSubmitterExecutor(int poolSize, boolean prestartIfAvailable) { return makeSchedulerService(poolSize, prestartIfAvailable); } @Override public SchedulerServiceTaskInterceptor makeSubmitterScheduler(int poolSize, boolean prestartIfAvailable) { return makeSchedulerService(poolSize, prestartIfAvailable); } @Override public SchedulerServiceTaskInterceptor makeSchedulerService(int poolSize, boolean prestartIfAvailable) { PriorityScheduler result = new PriorityScheduler(poolSize); if (prestartIfAvailable) { result.prestartAllThreads(); } schedulers.add(result); return new SchedulerServiceTaskInterceptor(result) { @Override public Runnable wrapTask(Runnable task, boolean recurring) { return task; } }; } @Override public void shutdown() { for (PriorityScheduler ps : schedulers) { ps.shutdownNow(); } } } }