/** * Simply set all to null so the Garbage Manager will collect it * */ public void Clean() { Buffer = null; this.SearchRegrouping = null; this.PeersBrowsed.Clear(); this.PeersBrowsed = null; this.ACKPacket.Clear(); this.ACKPacket = null; }
public void SearchKeyword(SearchTransaction searchTransaction) { queueKeywords = new System.Collections.Queue(); try { //pour chaque keyword on lance le search dans un thread séparé foreach (Keyword k in searchTransaction.Keywords) { KeywordCollection keyword = null; SearchTransaction searchTrans = null; keyword = new KeywordCollection(); keyword.Add(k); searchTrans = new SearchTransaction(searchTransaction.IdTransaction, keyword, searchTransaction.MinFileFromPeerFilter, searchTransaction.IpAcceptRangeCollection); queueKeywords.Enqueue(searchTrans); } // regrouping of results for this transaction // will raise the CompletResultHandler event when we received one results for each keyword G2SearchResultRegrouping searchRegrouping = new G2SearchResultRegrouping(searchTransaction, searchTransaction.Keywords.Count, false); searchRegrouping.CompletResult += new CompletResultHandler(searchRegrouping_CompletResult); searchResultRegroupingKeyword_.Add(searchRegrouping); while (queueKeywords.Count > 0) { SearchTransaction srchTrans = (SearchTransaction)queueKeywords.Dequeue(); G2Log.Write("Starting Transaction - Keyword :" + srchTrans.Keywords[0].KeywordName.ToString()); searchManager.NewSearch(srchTrans); // on attends 30sec ????????????????????????? //System.Threading.Thread.Sleep(30000); } } catch { G2Log.Write("Erreur niveau manager....."); } }
public G2SearchResults(SearchTransaction transaction, GUID guid) { SearchManager = G2SearchManager.Instance; ACKPacket = new List <G2PacketQA>(); Transaction = transaction; SearchGUID = guid; TotalFiles = 0; SharedTotalFiles = 0; PeersBrowsed = new HashSet <Peer>(); SearchedWord = transaction.Keywords[0].KeywordName; Buffer = new PacketBuffer(); SearchRegrouping = new G2SearchResultRegrouping(transaction, 0, false); ContinueRegrouping = true; StartSearchTime = DateTime.Now; StopSearchTimer = new System.Timers.Timer((double)Settings.SEARCH_TIME_OUT_MS); StopSearchTimer.AutoReset = false; StopSearchTimer.Elapsed += new ElapsedEventHandler(SearchTimeOut); RegroupingThread = new Thread(new ThreadStart(SearchResultThread)); }