Example #1
0
        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);
        }
Example #2
0
        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);
            }
        }