MCPcopy Create free account
hub / github.com/audacity/audacity / PerformPoll

Method PerformPoll

libraries/lib-cloud-audiocom/TaskExecutionService.cpp:173–246  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

171}
172
173void TaskExecutionService::PerformPoll()
174{
175 using namespace audacity::network_manager;
176
177 try
178 {
179 auto& serviceConfig = GetServiceConfig();
180 auto& oauthService = GetOAuthService();
181
182 Request request(serviceConfig.GetTaskPollUrl());
183
184 request.setHeader(
185 common_headers::ContentType, common_content_types::ApplicationJson);
186 request.setHeader(
187 common_headers::Accept, common_content_types::ApplicationJson);
188
189 SetCommonHeaders(request);
190 SetOptionalHeaders(request);
191
192 auto response = NetworkManager::GetInstance().doGet(request);
193
194 bool responseReceived = false;
195 std::string responseBody;
196 int httpCode = 0;
197
198 response->setRequestFinishedCallback(
199 [&responseReceived, &responseBody, &httpCode](auto response)
200 {
201 httpCode = response->getHTTPCode();
202 responseBody = response->template readAll<std::string>();
203 responseReceived = true;
204 });
205
206 const int maxWaitSeconds = 30;
207 for (int i = 0; i < maxWaitSeconds && !responseReceived && !mStopRequested; ++i)
208 {
209 std::this_thread::sleep_for(std::chrono::seconds(1));
210 }
211
212 if (!responseReceived || mStopRequested)
213 return;
214
215 if (httpCode != 200)
216 {
217 // Continue polling on error
218 return;
219 }
220
221 auto pollResponse = sync::DeserializeAppTaskPollResponse(responseBody);
222 if (!pollResponse)
223 {
224 // Continue polling on error
225 return;
226 }
227
228 mPollIntervalSeconds = pollResponse->Polling.IntervalSeconds;
229 mPollingDisabled = pollResponse->Polling.Stop;
230

Callers

nothing calls this directly

Calls 8

SetCommonHeadersFunction · 0.85
SetOptionalHeadersFunction · 0.85
GetTaskPollUrlMethod · 0.80
setHeaderMethod · 0.80
doGetMethod · 0.80
getHTTPCodeMethod · 0.45

Tested by

no test coverage detected