| 107 | } |
| 108 | |
| 109 | void MapFilesDownloader::DownloadAsString(std::string url, std::function<bool(std::string const &)> && callback, |
| 110 | bool forceReset /* = false */) |
| 111 | { |
| 112 | EnsureMetaConfigReady([this, forceReset, url = std::move(url), callback = std::move(callback)]() |
| 113 | { |
| 114 | if ((m_fileRequest && !forceReset) || m_serversList.empty()) |
| 115 | return; |
| 116 | |
| 117 | // Servers are sorted from best to worst. |
| 118 | m_fileRequest.reset(RequestT::Get(url::Join(m_serversList.front(), url), |
| 119 | [this, callback = std::move(callback)](RequestT & request) |
| 120 | { |
| 121 | bool deleteRequest = true; |
| 122 | auto const & buffer = request.GetData(); |
| 123 | |
| 124 | LOG(LDEBUG, ("DownloadAsString: status=", request.GetStatus(), "bytes=", buffer.size())); |
| 125 | |
| 126 | // Update deleteRequest flag if new download was requested in callback. |
| 127 | deleteRequest = !callback(buffer); |
| 128 | |
| 129 | if (deleteRequest) |
| 130 | m_fileRequest.reset(); |
| 131 | })); |
| 132 | }); |
| 133 | } |
| 134 | |
| 135 | void MapFilesDownloader::EnsureMetaConfigReady(std::function<void()> && callback) |
| 136 | { |