package com.jackson.common.control;
import com.jackson.common.source.CommonSource;
import com.jackson.db.po.Url;
import com.jackson.db.service.IDaoService;
import com.jackson.db.service.UrlService;
import com.jackson.reservoir.HttpGetPool;
import com.jackson.reservoir.ProxyPool;
import com.jackson.task.CreateTaskThread;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.util.concurrent.ScheduledThreadPoolExecutor;
/**
* Created by Jackson on 2016/12/21.
*/
@Deprecated
public class SimpleGetControl {
/*private boolean useProxy;
private ProxyPool proxyPool;
public static SimpleGetControl newInstance(UrlService urlService){
return new SimpleGetControl(urlService);
}
private static Logger logger = LogManager.getLogger(SimpleGetControl.class.getName());
private final CreateTaskThread createTaskThread;
private final CommonSource source;
private final UrlService urlService;
private ControlConfig controlConfig;
private SimpleGetControl(UrlService urlService) {
this.urlService = urlService;
source = CommonSource.newInstance();
createTaskThread = new TaskThread(urlService,source.getThreadPool());
}
public void start(){
initConfig();
if(useProxy){
proxyPool = ProxyController.getInstance().getProxyPool();
ProxyController.getInstance().setThreadSize(10).ipOkThreadStart();
}
createTaskThread.start();
}
private void initConfig() {
if(controlConfig ==null){
controlConfig = getDefaultConfig();
}
source.getThreadPool().setCorePoolSize(controlConfig.getCorePoolSize());
createTaskThread.setMaxTaskCache(controlConfig.getMaxTaskCache())
.setMinTaskCache(controlConfig.getMinTaskCache());
urlService.setMinUrlCatch(controlConfig.getMinServiceCatch());
urlService.setGetUrlSize(controlConfig.getGetServiceCatchSize());
}
private class TaskThread extends CreateTaskThread<Url>{
public TaskThread(IDaoService<Url> service, ScheduledThreadPoolExecutor threadPool) {
super(service, threadPool);
}
@Override
protected Runnable getTask(Url url) {
if(useProxy){
return new SimpleGetTask(proxyPool.take(),url,urlService,source);
}else {
return new SimpleGetTask(url,urlService,source);
}
}
@Override
protected long getDelay(Url url) {
return 0;
}
}
public void setControlConfig(ControlConfig controlConfig){
this.controlConfig = controlConfig;
}
*//**
* 设置线程数,其他变量根据线程数自动配置,在start()方法前调用
* @param threadSize
*//*
public SimpleGetControl setThreadSize(int threadSize){
ControlConfig controlConfig = ControlConfig.builder()
.setCorePoolSize(threadSize)
.setMaxTaskCache(2*threadSize)
.setMinTaskCache(threadSize+1)
.setGetServiceCatchSize(5*threadSize)
.setMinServiceCatch(threadSize+1)
.build();
setControlConfig(controlConfig);
return this;
}
public ControlConfig getDefaultConfig(){
return ControlConfig.builder()
.setCorePoolSize(10)
.setMaxTaskCache(80)
.setMinTaskCache(20)
.setGetServiceCatchSize(100)
.setMinServiceCatch(20)
.build();
}
public void setHttpGetConfigHandler(HttpGetPool.HttpGetConfigHandler handler){
source.getHttpGetPool().setHttpGetConfigHandler(handler);
}
public SimpleGetControl setUseProxy(boolean isUse){
this.useProxy = isUse;
return this;
}*/
}