pull/330/head
parent
0959e7c67c
commit
3386b14dfc
@ -1,89 +0,0 @@ |
||||
/* |
||||
* Copyright (C) 2016 AriaLyy(https://github.com/AriaLyy/Aria)
|
||||
* |
||||
* Licensed under the Apache License, Version 2.0 (the "License"); |
||||
* you may not use this file except in compliance with the License. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
package com.arialyy.aria.core.scheduler; |
||||
|
||||
import com.arialyy.aria.core.AriaManager; |
||||
import com.arialyy.aria.core.queue.DownloadGroupTaskQueue; |
||||
import com.arialyy.aria.core.queue.DownloadTaskQueue; |
||||
import java.util.Iterator; |
||||
import java.util.LinkedHashMap; |
||||
import java.util.Map; |
||||
|
||||
/** |
||||
* Created by Aria.Lao on 2017/7/13. |
||||
* 下载任务和队列的映射表 |
||||
*/ |
||||
public class DQueueMapping { |
||||
|
||||
public static final int QUEUE_TYPE_DOWNLOAD = 0xa1; |
||||
public static final int QUEUE_TYPE_DOWNLOAD_GROUP = 0xa2; |
||||
public static final int QUEUE_NONE = 0xab2; |
||||
private LinkedHashMap<String, Integer> types = new LinkedHashMap<>(); |
||||
|
||||
private static volatile DQueueMapping instance = null; |
||||
|
||||
private DQueueMapping() { |
||||
|
||||
} |
||||
|
||||
public static DQueueMapping getInstance() { |
||||
if (instance == null) { |
||||
synchronized (AriaManager.LOCK) { |
||||
instance = new DQueueMapping(); |
||||
} |
||||
} |
||||
return instance; |
||||
} |
||||
|
||||
/** |
||||
* map中增加类型 |
||||
* |
||||
* @param key 任务的key |
||||
* @param type {@link #QUEUE_TYPE_DOWNLOAD}、{@link #QUEUE_TYPE_DOWNLOAD} |
||||
*/ |
||||
public void addType(String key, int type) { |
||||
types.put(key, type); |
||||
} |
||||
|
||||
/** |
||||
* @param key 任务的key |
||||
*/ |
||||
public void removeType(String key) { |
||||
types.remove(key); |
||||
} |
||||
|
||||
/** |
||||
* 获取下一个任务类型 |
||||
* |
||||
* @return {@link #QUEUE_TYPE_DOWNLOAD}、{@link #QUEUE_TYPE_DOWNLOAD} |
||||
*/ |
||||
public int nextType() { |
||||
Iterator<Map.Entry<String, Integer>> iter = types.entrySet().iterator(); |
||||
if (iter.hasNext()) { |
||||
Map.Entry<String, Integer> next = iter.next(); |
||||
int type = next.getValue(); |
||||
iter.remove(); |
||||
return type; |
||||
} |
||||
return QUEUE_NONE; |
||||
} |
||||
|
||||
public boolean canStart() { |
||||
return DownloadTaskQueue.getInstance().getCurrentExePoolNum() |
||||
+ DownloadGroupTaskQueue.getInstance().getCurrentExePoolNum() >= AriaManager.getInstance( |
||||
AriaManager.APP).getDownloadConfig().getMaxTaskNum(); |
||||
} |
||||
} |
Loading…
Reference in new issue