예제 #1
0
파일: FileInfo.cs 프로젝트: san90279/UK_OAS
 /// <summary>
 /// 获取两个文件信息集合的差集,用于得到更新列表
 /// </summary>
 /// <param name="clientfiles">客户端上传的已存在文件集合</param>
 /// <returns>需要更新的文件集合</returns>
 public FileInfoCollection GetDownloadList(FileInfoCollection clientfiles)
 {
     lock (this)
     {
         FileInfoCollection fc = new FileInfoCollection();
         IEnumerator ie = this.GetEnumerator();
         while (ie.MoveNext())
         {
             FileInfo fi = ((DictionaryEntry)ie.Current).Value as FileInfo;
             int id = (int)((DictionaryEntry)ie.Current).Key;
             if (clientfiles.ContainsKey(id) && clientfiles[id].Equals(fi))
             {
                 //重新取得修改日期及时间
             }
             else
             {
                 fc.Add(fi.ID, fi);
             }
         }
         if (clientfiles.FileResume != null)//如果存在续传文件
         {
             if (this.ContainsKey(clientfiles.FileResume.ID) && this[clientfiles.FileResume.ID].Equals(clientfiles.FileResume))//比对续传文件的信息,如果不相同则重新发送
             {
                 fc.SetFiletoResumeInfo(clientfiles.FileResume.ID, clientfiles.FileResume.Date
                     , clientfiles.FileResume.Length, clientfiles.FileOffSet);
             }
         }
         return fc;
     }
 }
예제 #2
0
파일: FileInfo.cs 프로젝트: san90279/UK_OAS
 /// <summary>
 /// 复制一个相同的文件信息集合
 /// </summary>
 /// <returns>复制得到的集合</returns>
 public new FileInfoCollection Clone()
 {
     lock (this)
     {
         FileInfoCollection fc = new FileInfoCollection();
         IEnumerator ie = this.GetEnumerator();
         while (ie.MoveNext())
         {
             FileInfo fi = ((DictionaryEntry)ie.Current).Value as FileInfo;
             fc.Add(fi.ID, fi);
         }
         return fc;
     }
 }