in Source/Shared/arcana/scheduling/state_machine.h [116:138]
void cancel_exit(state_machine_state<T>& state)
{
task_completion_source<T, std::error_code> exit;
{
std::lock_guard<std::mutex> guard{ m_mutex };
auto found = m_states.find(&state);
if (found == m_states.end())
{
return;
}
if (found->second.StateExited.completed())
{
return;
}
exit = found->second.StateExited.template unsafe_cast<T, std::error_code>();
m_states.erase(found);
}
exit.complete(make_unexpected(std::make_error_code(std::errc::operation_canceled)));
}