/**
* This file is part of Waarp Project.
*
* Copyright 2009, Frederic Bregier, and individual contributors by the @author tags. See the
* COPYRIGHT.txt in the distribution for a full listing of individual contributors.
*
* All Waarp Project is free software: you can redistribute it and/or modify it under the terms of
* the GNU General Public License as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version.
*
* Waarp is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with Waarp . If not, see
* <http://www.gnu.org/licenses/>.
*/
package org.waarp.openr66.commander;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.waarp.common.database.data.AbstractDbData;
import org.waarp.openr66.context.ErrorCode;
/**
* Thread Pool Executor for ClientRunner
*
* @author Frederic Bregier
*
*/
class ThreadPoolRunnerExecutor extends ThreadPoolExecutor {
/**
* RejectedExecutionHandler for this ThreadPoolRunnerExecutor
*
* @author Frederic Bregier
*
*/
private static class RunnerRejectedExecutionHandler implements RejectedExecutionHandler {
public void rejectedExecution(Runnable arg0, ThreadPoolExecutor arg1) {
ClientRunner runner = (ClientRunner) arg0;
runner.changeUpdatedInfo(AbstractDbData.UpdatedInfo.INERROR,
ErrorCode.Unknown, true);
}
}
/**
* @param corePoolSize
* @param maximumPoolSize
* @param keepAliveTime
* @param unit
* @param workQueue
*/
public ThreadPoolRunnerExecutor(int corePoolSize, int maximumPoolSize,
long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
this.setRejectedExecutionHandler(new RunnerRejectedExecutionHandler());
}
/**
* @param corePoolSize
* @param maximumPoolSize
* @param keepAliveTime
* @param unit
* @param workQueue
* @param threadFactory
*/
public ThreadPoolRunnerExecutor(int corePoolSize, int maximumPoolSize,
long keepAliveTime, TimeUnit unit,
BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory) {
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
threadFactory);
this.setRejectedExecutionHandler(new RunnerRejectedExecutionHandler());
}
/**
* @param corePoolSize
* @param maximumPoolSize
* @param keepAliveTime
* @param unit
* @param workQueue
* @param handler
*/
public ThreadPoolRunnerExecutor(int corePoolSize, int maximumPoolSize,
long keepAliveTime, TimeUnit unit,
BlockingQueue<Runnable> workQueue, RejectedExecutionHandler handler) {
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
handler);
this.setRejectedExecutionHandler(new RunnerRejectedExecutionHandler());
}
/**
* @param corePoolSize
* @param maximumPoolSize
* @param keepAliveTime
* @param unit
* @param workQueue
* @param threadFactory
* @param handler
*/
public ThreadPoolRunnerExecutor(int corePoolSize, int maximumPoolSize,
long keepAliveTime, TimeUnit unit,
BlockingQueue<Runnable> workQueue, ThreadFactory threadFactory,
RejectedExecutionHandler handler) {
super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,
threadFactory, handler);
this.setRejectedExecutionHandler(new RunnerRejectedExecutionHandler());
}
}