public void ResumeFile(string strFileHash) { CElement Elemento = (CElement)this[CKernel.StringToHash(strFileHash)]; if ((Elemento != null) && (Elemento.SourcesList == null) && ((Elemento.File.FileStatus == Protocol.FileState.Stopped) || (Elemento.File.FileStatus == Protocol.FileState.Pause))) { Elemento.SourcesList = new CSourcesList(Elemento); Elemento.File.FileStatus = Protocol.FileState.Ready; if (Elemento.Comments == null) { Elemento.Comments = new CedonkeyComments(Elemento); } Elemento.Statistics.ResetStartTime(); lock (CKernel.Queue.List.SyncRoot) { foreach (CClient Client in CKernel.Queue.List) { if (Client.UploadElement == Elemento) { CKernel.ClientsList.AddClientToFile(Client, Elemento.File.FileHash); } } if (CKernel.ServersList.ActiveServer != null) { CKernel.ServersList.ActiveServer.RequestSources(Elemento.File.FileHash); } } } }
public void DeleteFile(string strFileHash) { CElement Element = (CElement)this[CKernel.StringToHash(strFileHash)]; if ((Element != null) && (Element.File.FileStatus == Protocol.FileState.Complete)) { if (Element.SourcesList != null) { m_StopFile(Element); } if (Element.Comments != null) { Element.Comments.Element = null; } Element.Comments = null; try { File.Delete(Element.File.CompleteName); } catch {} Element.File = null; m_FileList.Remove(Element); Element = null; } }
public void SetDownloadPriority(string strFileHash, Constants.Priority priority) { CElement ChangedElement = (CElement)this[CKernel.StringToHash(strFileHash)]; if ((ChangedElement == null) || (ChangedElement.File.DownPriority == priority) || (ChangedElement.File.FileStatus == Protocol.FileState.Complete)) { return; } ChangedElement.File.DownPriority = (Constants.Priority)priority; CKernel.ClientsList.SwapClientsToHigherPriorityFile(); }
public void SetFileCategory(string strFileHash, string category) { CElement Element = (CElement)this[CKernel.StringToHash(strFileHash)]; if (Element != null) { CCategory cat = CKernel.CategoriesList.GetCategoryByName(category); if (cat != null) { Element.File.CategoryID = cat.ID; } else { Element.File.CategoryID = 0; } } }
public void CompleteFile(string strFileHash) { CElement Element = (CElement)this[CKernel.StringToHash(strFileHash)]; if (Element != null) { m_StopFile(Element); Element.File.FileStatus = Protocol.FileState.Complete; Element.File.UpPriority = Constants.Priority.Normal; CLog.Log(Constants.Log.Notify, "FIL_COMPLETED", Element.File.FileName); Element.Statistics.TimeCompleted = DateTime.Now; if (CKernel.Preferences.GetBool("StartNextStoppedFile")) { m_StartNextPausedFile(Element.File.CategoryID); } } }
public void AddSourcesToFile() { if ((Sources == null) || (Sources.Count == 0)) { return; } CElement element = CKernel.FilesList[CKernel.StringToHash(this.Hash)]; int i; if ((element != null) && (element.File.FileStatus == Protocol.FileState.Ready)) { stDatosFuente[] sourcesList = new stDatosFuente[Sources.Count]; i = 0; foreach (uint ip in Sources.Keys) { sourcesList[i].IP = ip; sourcesList[i].Port = (ushort)Sources[ip]; i++; } CKernel.ClientsList.AddClientsToFile(sourcesList, CKernel.StringToHash(this.Hash)); } }
public void CancelFile(string strFileHash) { CElement Element = (CElement)this[CKernel.StringToHash(strFileHash)]; if ((Element != null) && (Element.File.FileStatus != Protocol.FileState.Complete)) { Element.File.FileStatus = Protocol.FileState.Stopped; if (Element.SourcesList != null) { m_StopFile(Element); } if (Element.Comments != null) { Element.Comments.Element = null; } Element.Comments = null; Element.File.CancelFile(); Element.File = null; m_FileList.Remove(Element); Element = null; } }
public void UpdateFile(uint in_Avaibility, string in_Name, string in_codec, string in_length, uint in_bitrate, bool in_complete, uint in_ip, ushort in_port) { this.Avaibility += in_Avaibility; Complete = Complete || in_complete; if (!this.OtherNames.Contains(in_Name)) { this.OtherNames.Add(in_Name); } if (((Length == null) || (Length.Length == 0)) && (in_length.Length > 0)) { Length = in_length; } if ((Codec.Length == 0) && (in_codec.Length > 0)) { Codec = in_codec; } if ((BitRate == 0) && (in_bitrate > 0)) { BitRate = in_bitrate; } if ((in_ip > Protocol.LowIDLimit) && (in_port > 0) && (in_port < ushort.MaxValue)) { if (Sources == null) { Sources = new Hashtable(); } if (!Sources.Contains(in_ip)) { Sources.Add(in_ip, in_port); } //Debug.WriteLine(in_ip.ToString()+":"+in_port.ToString()); CElement element = CKernel.FilesList[CKernel.StringToHash(Hash)]; if ((element != null) && (element.File.FileStatus == Protocol.FileState.Ready)) { CKernel.ClientsList.AddClientToFile(in_ip, in_port, 0, 0, element.File.FileHash); } } }
public void CloseDownloads(string strFileHash, bool stop) { if (strFileHash.Length == 0) //stop all downloads { foreach (CElement Elemento in this.Values) { if (Elemento.SourcesList != null) { Elemento.SourcesList.Clean(); } Elemento.SourcesList = null; } if (stop) { m_FileListThread.Abort(); } } else //stop specified download { CElement Elemento = (CElement)this[CKernel.StringToHash(strFileHash)]; m_StopFile(Elemento); } }
public CFileFound(string in_Hash, string in_Name, uint in_Size, uint in_Avaibility, string in_codec, string in_length, uint in_bitrate, bool in_complete, uint in_ip, ushort in_port) { this.Hash = in_Hash; this.Name = in_Name; this.Size = in_Size; this.Avaibility = in_Avaibility; Codec = in_codec; BitRate = in_bitrate; Length = in_length; Complete = in_complete; this.OtherNames = new StringCollection(); this.OtherNames.Add(Name); CElement element = CKernel.FilesList[CKernel.StringToHash(in_Hash)]; if (element == null) { ResultState = Types.Constants.SearchResultState.New; } else if (element.File.FileStatus == Protocol.FileState.Complete) { ResultState = Types.Constants.SearchResultState.AlreadyDownloaded; } else { ResultState = Types.Constants.SearchResultState.AlreadyDownloading; } if ((in_ip > Protocol.LowIDLimit) && (in_port > 0) && (in_port < ushort.MaxValue)) { Sources = new Hashtable(); Sources.Add(in_ip, in_port); //Debug.WriteLine(in_ip.ToString()+":"+in_port.ToString()); if ((element != null) && (element.File.FileStatus == Protocol.FileState.Ready)) { CKernel.ClientsList.AddClientToFile(in_ip, in_port, 0, 0, element.File.FileHash); } } }