From 97b0eb447e36308cd6783add28de88e429627bfe Mon Sep 17 00:00:00 2001 From: Dmitry Mikushin Date: Sun, 12 Feb 2023 22:38:29 +0100 Subject: Parameterizing the number of retries and backoff duration for HttpClient.makeRequest --- src/Api.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/Api.cpp') diff --git a/src/Api.cpp b/src/Api.cpp index dcb2b36..b6dba9a 100644 --- a/src/Api.cpp +++ b/src/Api.cpp @@ -2499,7 +2499,9 @@ boost::property_tree::ptree Api::sendRequest(const std::string& method, const st url += "/"; url += method; - while(1) + int requestRetryBackoff = _httpClient.getRequestBackoff(); + int retries = 0; + while (1) { std::string serverResponse = _httpClient.makeRequest(url, args); if (!serverResponse.compare(0, 6, "")) { @@ -2511,9 +2513,14 @@ boost::property_tree::ptree Api::sendRequest(const std::string& method, const st if (result.get("ok", false)) { return result.get_child("result"); } else { - std::this_thread::sleep_for(std::chrono::seconds(1)); - continue; - //throw TgException(result.get("description", "")); + if (retries == _httpClient.getRequestMaxRetries()) { + throw TgException(result.get("description", "")); + } + else { + std::this_thread::sleep_for(std::chrono::seconds(requestRetryBackoff)); + retries++; + continue; + } } } catch (boost::property_tree::ptree_error& e) { throw TgException("tgbot-cpp library can't parse json response. " + std::string(e.what())); -- cgit v1.2.3