OSDN Git Service

コンフィグからスレッド数と待機時間を取得して設定
authoryukihane <yukihane.feather@gmail.com>
Tue, 30 Aug 2011 04:42:20 +0000 (13:42 +0900)
committeryukihane <yukihane.feather@gmail.com>
Tue, 30 Aug 2011 04:42:20 +0000 (13:42 +0900)
frontend/src/saccubus/worker/impl/download/Download.java
frontend/src/yukihane/inqubus/gui/MainFrame.java
frontend/src/yukihane/inqubus/manager/TaskManage.java

index 5506f58..534ccb3 100644 (file)
@@ -40,9 +40,10 @@ public class Download extends Worker<DownloadResult, DownloadProgress> {
     private static volatile long lastStartTime = 0L;
     private final DownloadProfile profile;
     private final String videoId;
+    private final int waitDownload;
 
     public Download(DownloadProfile profile, String videoId) {
-        this(profile, videoId, null);
+        this(profile, videoId, null, 30);
     }
 
     /**
@@ -53,11 +54,12 @@ public class Download extends Worker<DownloadResult, DownloadProgress> {
      * @param listener
      * @param flag
      */
-    public Download(DownloadProfile profile, String videoId, WorkerListener<DownloadResult, DownloadProgress> listener) {
+    public Download(DownloadProfile profile, String videoId, WorkerListener<DownloadResult, DownloadProgress> listener, int wait) {
         // TODO listener登録
         super(listener);
         this.videoId = videoId;
         this.profile = profile;
+        this.waitDownload = wait;
     }
 
 //    @Override
@@ -257,8 +259,7 @@ public class Download extends Worker<DownloadResult, DownloadProgress> {
     private void waitAndGo() throws InterruptedException {
         synchronized (timeLockObj) {
             final long now = new Date().getTime();
-            // TODO 30秒間隔はコンフィグ設定できた方が良い
-            final long needSleep = (30 * 1000L) - (now - lastStartTime);
+            final long needSleep = (waitDownload * 1000L) - (now - lastStartTime);
             if(needSleep > 0L) {
                 publish(new DownloadProgress(DownloadStatus.PROCESS, -1.0, "過剰アクセス抑制待機 " + needSleep / 1000));
                 Thread.sleep(needSleep);
index 2190543..44a2b7c 100644 (file)
@@ -346,7 +346,10 @@ public class MainFrame extends JFrame {
         final Config p = Config.INSTANCE;
         // TODO コンフィグからスレッド数
         // TODO downloadの連続処理時待ち時間設定も必要...
-        taskManager = new TaskManage(2, 2, new GuiTaskManageListener());
+        final int thDownload = p.getSystemDownloadThread();
+        final int secDownload = p.getSystemDownloadWait();
+        final int thConvert = p.getSystemConvertThread();
+        taskManager = new TaskManage(thDownload, secDownload,thConvert, new GuiTaskManageListener());
     }
 
     private class GuiTaskManageListener implements TaskManageListener {
index 009da3c..311c622 100644 (file)
@@ -32,18 +32,20 @@ public class TaskManage {
     private final Map<Integer, ManageTarget<DownloadResult>> downloadTargets = new HashMap<>();
     private final Map<Integer, ManageTarget<ConvertResult>> convertTargets = new HashMap<>();
     private final TaskManageListener clientListener;
+    private final int waitDownload;
 
     public TaskManage() {
-        this(1, 1, null);
+        this(1, 30, 1, null);
     }
 
     public TaskManage(int maxDownload, int maxConvert) {
-        this(maxDownload, maxConvert, null);
+        this(maxDownload, 30, maxConvert, null);
     }
 
-    public TaskManage(int maxDownload, int maxConvert, TaskManageListener listener) {
+    public TaskManage(int maxDownload, int waitDownload, int maxConvert, TaskManageListener listener) {
         downloadExecutorService = Executors.newFixedThreadPool(maxDownload);
         convertExecutorService = Executors.newFixedThreadPool(maxConvert);
+        this.waitDownload = waitDownload;
         this.clientListener = listener;
     }
 
@@ -53,7 +55,7 @@ public class TaskManage {
         if (dp != null && (dp.getVideoProfile().isDownload() || dp.getCommentProfile().isDownload())) {
             // ダウンロードするものがあればまずダウンロード処理
             final Download task = new Download(dp, request.getVideoId(),
-                    new DownloadListener(request.getRowId()));
+                    new DownloadListener(request.getRowId()), waitDownload);
             final Future<DownloadResult> future = downloadExecutorService.submit(task);
             downloadTargets.put(request.getRowId(), new ManageTarget<>(request, future));
             return true;