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

Method prepareTeardown

Libraries/Async/Async.cpp:2015–2076  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2013};
2014
2015void SC::AsyncEventLoop::Internal::prepareTeardown(AsyncEventLoop& eventLoop, AsyncRequest& async,
2016 AsyncTeardown& teardown)
2017{
2018 teardown.eventLoop = &eventLoop;
2019 teardown.type = async.type;
2020 teardown.flags = async.flags;
2021 teardown.sequence = async.sequence;
2022#if SC_ASYNC_ENABLE_LOG
2023#if SC_COMPILER_MSVC || SC_COMPILER_CLANG_CL
2024 ::strncpy_s(teardown.debugName, async.debugName, sizeof(teardown.debugName));
2025#else
2026 ::strncpy(teardown.debugName, async.debugName, sizeof(teardown.debugName));
2027#endif
2028#endif
2029 // clang-format off
2030 switch (async.type)
2031 {
2032 // Loop
2033 case AsyncRequest::Type::LoopTimeout: break;
2034 case AsyncRequest::Type::LoopWakeUp: break;
2035 case AsyncRequest::Type::LoopWork: break;
2036
2037 // Process
2038 case AsyncRequest::Type::ProcessExit:
2039#if SC_PLATFORM_LINUX
2040 (void)static_cast<AsyncProcessExit&>(async).pidFd.get(teardown.fileHandle, Result::Error("missing pidfd"));
2041 static_cast<AsyncProcessExit&>(async).pidFd.detach();
2042#endif
2043 teardown.processHandle = static_cast<AsyncProcessExit&>(async).handle;
2044 break;
2045
2046 case AsyncRequest::Type::Signal:
2047#if SC_PLATFORM_WINDOWS
2048 teardown.signalNumber = static_cast<AsyncSignal&>(async).signalNumber;
2049#elif SC_PLATFORM_LINUX
2050 (void)static_cast<AsyncSignal&>(async).signalFd.get(teardown.fileHandle, Result::Error("missing signalfd"));
2051 static_cast<AsyncSignal&>(async).signalFd.detach();
2052#elif SC_PLATFORM_APPLE
2053 teardown.signalNumber = static_cast<AsyncSignal&>(async).signalNumber;
2054#endif
2055 break;
2056
2057 // Socket
2058 case AsyncRequest::Type::SocketAccept: teardown.socketHandle = static_cast<AsyncSocketAccept&>(async).handle; break;
2059 case AsyncRequest::Type::SocketConnect: teardown.socketHandle = static_cast<AsyncSocketConnect&>(async).handle; break;
2060 case AsyncRequest::Type::SocketSend: teardown.socketHandle = static_cast<AsyncSocketSend&>(async).handle; break;
2061 case AsyncRequest::Type::SocketSendTo: teardown.socketHandle = static_cast<AsyncSocketSendTo&>(async).handle; break;
2062 case AsyncRequest::Type::SocketReceive: teardown.socketHandle = static_cast<AsyncSocketReceive&>(async).handle; break;
2063 case AsyncRequest::Type::SocketReceiveFrom: teardown.socketHandle = static_cast<AsyncSocketReceiveFrom&>(async).handle; break;
2064
2065 // File
2066 case AsyncRequest::Type::FileRead: teardown.fileHandle = static_cast<AsyncFileRead&>(async).handle; break;
2067 case AsyncRequest::Type::FileWrite: teardown.fileHandle = static_cast<AsyncFileWrite&>(async).handle; break;
2068 case AsyncRequest::Type::FileSend: teardown.fileHandle = static_cast<AsyncFileSend&>(async).fileHandle; break;
2069 case AsyncRequest::Type::FileReadiness: teardown.fileHandle = static_cast<AsyncFileReadiness&>(async).handle; break;
2070 case AsyncRequest::Type::ExternalCompletion: teardown.fileHandle = static_cast<AsyncExternalCompletion&>(async).handle; break;
2071
2072 // FileSystemOperation

Callers

nothing calls this directly

Calls 3

ErrorEnum · 0.50
getMethod · 0.45
detachMethod · 0.45

Tested by

no test coverage detected