internal void ProcessSearchResults(ResponseSearchResults response) { GuiSearch gs = new GuiSearch(); bool updated = false; System.Diagnostics.Debug.WriteLineIf(DEBUG, "Search: Processing " + response.searches.Count + " search results"); foreach (SearchSet ss in response.searches) { System.Diagnostics.Debug.WriteLineIf(DEBUG, "Search: Processing ID" + ss.search_id + " with " + ss.hits.Count + " hits"); if (_searches.ContainsKey(ss.search_id)) { gs = _searches[ss.search_id]; System.Diagnostics.Debug.WriteLineIf(DEBUG, "Search: Updating results (ID " + gs.ID + ")"); if (ss.hits.Count > 0) { gs.Results.Clear(); } foreach (SearchHit sh in ss.hits) { updated = false; // update for (int i = 0; i < gs.Results.Count; i++) { if (gs.Results[i].file.hash == sh.file.hash) { gs.Results[i].no_hits += sh.no_hits; gs.Results[i].file.name = (gs.Results[i].file.name.Length > sh.file.name.Length) ? gs.Results[i].file.name : sh.file.name; updated = true; } } // adding new if (!updated) { gs.Results.Add(sh); } } _searches[ss.search_id] = gs; } } UpdateSearches(); UpdateSearchResults(_b.GUI.lb_searches.SelectedIndex); }
private void ProcessSearchResults(RSProtoBuffSSHMsg msg) { ResponseSearchResults response = new ResponseSearchResults(); Exception e; if (RSProtoBuf.Deserialize <ResponseSearchResults>(msg.ProtoBuffMsg, out response, out e)) { if (response.status.code == Status.StatusCode.SUCCESS) { _b.SearchProcessor.ProcessSearchResults(response); } else { _b.GUI.tb_out.AppendText("SearchResults response: " + response.status.code + "\n"); } } else { System.Diagnostics.Debug.WriteLine("ProcessSearchResults: error deserializing " + e.Message); } }