Add a utility Wait() method with timeout to WSLAProcessLauncher (#13831)

Co-authored-by: Pooja Trivedi <trivedipooja@microsoft.com>
This commit is contained in:
Pooja Trivedi 2025-12-04 21:18:29 -05:00 committed by GitHub
parent 844acd07d5
commit 2e8479a552
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 0 deletions

View File

@ -109,6 +109,12 @@ std::string WSLAProcessLauncher::FormatResult(const RunningWSLAProcess::ProcessR
stdErr != result.Output.end() ? stdErr->second : "<none>");
}
std::pair<int, bool> RunningWSLAProcess::Wait(DWORD TimeoutMs)
{
THROW_HR_IF(HRESULT_FROM_WIN32(ERROR_TIMEOUT), !GetExitEvent().wait(TimeoutMs));
return GetExitState();
}
RunningWSLAProcess::ProcessResult RunningWSLAProcess::WaitAndCaptureOutput(DWORD TimeoutMs, std::vector<std::unique_ptr<relay::OverlappedIOHandle>>&& ExtraHandles)
{
RunningWSLAProcess::ProcessResult result;

View File

@ -47,6 +47,7 @@ public:
DEFAULT_MOVABLE(RunningWSLAProcess);
ProcessResult WaitAndCaptureOutput(DWORD TimeoutMs = INFINITE, std::vector<std::unique_ptr<relay::OverlappedIOHandle>>&& ExtraHandles = {});
std::pair<int, bool> Wait(DWORD TimeoutMs = INFINITE);
virtual wil::unique_handle GetStdHandle(int Index) = 0;
virtual wil::unique_event GetExitEvent() = 0;
std::pair<int, bool> GetExitState();