package com.sound.chat;

import java.util.LinkedList;
import java.util.HashSet;  
import java.util.Set; 
/**
 * 下载管家
 * @author Administrator
 */
public class DownloadTaskManager {  
    //请求队列  
    private LinkedList<DownloadTask> downloadTasks;
    // 任务不能重复  
    private Set<String> taskIdSet;    
    private static DownloadTaskManager downloadTaskMananger;  
  
    private DownloadTaskManager() {  
        downloadTasks = new LinkedList<DownloadTask>(); 
        taskIdSet = new HashSet<String>(); 
    }  
  
    public static synchronized DownloadTaskManager getInstance() {  
        if (downloadTaskMananger == null) {  
            downloadTaskMananger = new DownloadTaskManager();  
        }  
        return downloadTaskMananger;  
    }  
  
    public void addDownloadTask(DownloadTask downloadTask) {  
        synchronized (downloadTasks) {  
            if (!isTaskRepeat(downloadTask.getFileId())) {
                // 增加下载任务
                downloadTasks.addLast(downloadTask);
            } 
        }  
    }

    public boolean isTaskRepeat(String fileId) {  
        synchronized (taskIdSet) {  
            if (taskIdSet.contains(fileId)) {  
                return true;  
            } else {  
                taskIdSet.add(fileId);  
                return false;  
            }  
        }  
    }    
    
    public DownloadTask getDownloadTask() {
        synchronized (downloadTasks) {  
            if (downloadTasks.size() > 0) {
                DownloadTask downloadTask = downloadTasks.removeFirst();  
                return downloadTask;  
            }  
        }  
        return null;  
    }  
}  