#pragma once #include #include #include #include "search_server.h" class RequestQueue { public: explicit RequestQueue(const SearchServer& search_server); template std::vector AddFindRequest(const std::string& raw_query, DocumentPredicate document_predicate); std::vector AddFindRequest(const std::string& raw_query, DocumentStatus status); std::vector AddFindRequest(const std::string& raw_query); int GetNoResultRequests() const; private: struct QueryResult { std::string raw_query; std::vector results; }; std::deque requests_; const static int sec_in_day_ = 1440; const SearchServer *server; int number_of_empty_docs_; void AddResult(const QueryResult &result); }; template std::vector RequestQueue::AddFindRequest(const std::string& raw_query, DocumentPredicate document_predicate) { QueryResult result; result.raw_query = raw_query; result.results = server->FindTopDocuments(raw_query, document_predicate); AddResult(result); return result.results; }