Exemplo n.º 1
0
void Engine::DoSearch(SearchParams const & params, m2::RectD const & viewport,
                      shared_ptr<ProcessorHandle> handle, Processor & processor)
{
  bool const viewportSearch = params.m_mode == Mode::Viewport;

  processor.Reset();
  processor.Init(viewportSearch);
  handle->Attach(processor);
  MY_SCOPE_GUARD(detach, [&handle]
                 {
                   handle->Detach();
                 });

  // Early exit when query processing is cancelled.
  if (processor.IsCancelled())
  {
    Results results;
    results.SetEndMarker(true /* isCancelled */);
    params.m_onResults(results);
    return;
  }

  processor.Search(params, viewport);
}