package com.aionemu.packetsamurai.logrepo; import java.util.List; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUnit; import javolution.util.FastList; /** * * @author Gilles Duboscq * */ public class UploadQueue { private ThreadPoolExecutor _threadPool; public UploadQueue(int size) { _threadPool = new ThreadPoolExecutor(size,size,15L,TimeUnit.SECONDS,new LinkedBlockingQueue<Runnable>()); } public void addNewUpLoadTask(LogFile log) { _threadPool.execute(new UploadTask(log)); } public List<LogFile> getWaitingLogs() { List<LogFile> logs = new FastList<LogFile>(); for(Runnable r :_threadPool.getQueue()) { logs.add(((UploadTask)r).getLog()); } return logs; } private class UploadTask implements Runnable { private LogFile _log; public UploadTask(LogFile log) { _log = log; } public LogFile getLog() { return _log; } public void run() { RemoteLogRepositoryBackend.getInstance().upLoadFile(_log); } } }