| 1406 | const Result effectiveUrlResult = copyResponseEffectiveUrl(currentRequest.url); |
| 1407 | if (not effectiveUrlResult) |
| 1408 | { |
| 1409 | requestInFlight = false; |
| 1410 | return effectiveUrlResult; |
| 1411 | } |
| 1412 | |
| 1413 | const Result startResult = platformStart(); |
| 1414 | if (not startResult) |
| 1415 | { |
| 1416 | requestInFlight = false; |
| 1417 | } |
| 1418 | return startResult; |
| 1419 | } |
| 1420 | |
| 1421 | SC::Result SC::HttpClientOperation::enqueueEvent(const HttpClientOperationEvent& event) |
| 1422 | { |
| 1423 | eventMutex.lock(); |
| 1424 | while (eventCount >= eventQueue.sizeInElements()) |
| 1425 | { |
| 1426 | eventCV.wait(eventMutex); |
| 1427 | } |
| 1428 | eventQueue[eventTail] = event; |
| 1429 | eventTail = (eventTail + 1) % eventQueue.sizeInElements(); |
| 1430 | eventCount += 1; |
| 1431 | eventCV.signal(); |
| 1432 | eventMutex.unlock(); |
| 1433 | |
| 1434 | if (notifier != nullptr) |
| 1435 | { |
| 1436 | notifier->notifyHttpClientOperation(*this); |
| 1437 | } |
| 1438 | return Result(true); |
| 1439 | } |
| 1440 | |
| 1441 | bool SC::HttpClientOperation::dequeueEvent(HttpClientOperationEvent& event) |
| 1442 | { |
| 1443 | eventMutex.lock(); |
| 1444 | if (eventCount == 0) |
| 1445 | { |
| 1446 | eventMutex.unlock(); |
| 1447 | return false; |
| 1448 | } |
| 1449 | event = eventQueue[eventHead]; |