void cancel_exit()

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)));
        }