MCPcopy Create free account
hub / github.com/Pagghiu/SaneCppLibraries / completeCancellation

Method completeCancellation

Libraries/Async/Async.cpp:1750–1792  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1748 continue;
1749 }
1750 completeCancellation(eventLoop, *async);
1751 async = next;
1752 }
1753}
1754
1755void SC::AsyncEventLoop::Internal::completeCancellation(AsyncEventLoop& eventLoop, AsyncRequest& async)
1756{
1757 AsyncSequence* sequenceToResume = nullptr;
1758 if (async.sequence and not async.sequence->clearSequenceOnCancel)
1759 {
1760 sequenceToResume = async.sequence;
1761 }
1762 if (async.type == AsyncRequest::Type::ExternalCompletion)
1763 {
1764 AsyncExternalCompletion& externalCompletion = static_cast<AsyncExternalCompletion&>(async);
1765 if (externalCompletion.hasSubmissionPending())
1766 {
1767 SC_ASYNC_TRUST_RESULT(externalCompletion.clearSubmissionPending());
1768 }
1769#if SC_PLATFORM_WINDOWS
1770 externalCompletion.overlapped.get().userData = nullptr;
1771#endif
1772 }
1773 if (async.sequence and async.sequence->runningRequest == &async)
1774 {
1775 async.sequence->runningAsync = false;
1776 async.sequence->runningRequest = nullptr;
1777 }
1778 async.markAsFree();
1779 cancellations.remove(async);
1780 if (sequenceToResume)
1781 {
1782 resumeSequence(*sequenceToResume);
1783 }
1784 else if (async.sequence)
1785 {
1786 untrackSequenceIfIdle(*async.sequence);
1787 }
1788 if (async.closeCallback)
1789 {
1790 Function<void(AsyncResult&)> closeCallback = *async.closeCallback;
1791 async.closeCallback = nullptr;
1792
1793 Result result(true);
1794 AsyncResult res(eventLoop, async, result);
1795 closeCallback(res);

Callers

nothing calls this directly

Calls 4

markAsFreeMethod · 0.80
getMethod · 0.45
removeMethod · 0.45

Tested by

no test coverage detected