blob: 3fba4ca58fb957249cfcccc5409059e1c5390ee2 [file] [log] [blame]
// Copyright 2020 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/developer/debug/debug_agent/job_handle.h"
namespace debug_agent {
std::unique_ptr<JobHandle> JobHandle::FindJob(zx_koid_t job_koid) const {
if (GetKoid() == job_koid)
return Duplicate();
for (const auto& job : GetChildJobs()) {
if (auto found = job->FindJob(job_koid))
return found;
}
return nullptr;
}
std::unique_ptr<ProcessHandle> JobHandle::FindProcess(zx_koid_t process_koid) const {
// Search direct process descendents of this job.
for (auto& proc : GetChildProcesses()) {
if (proc->GetKoid() == process_koid)
return std::move(proc);
}
// Recursively search child jobs.
for (const auto& job : GetChildJobs()) {
if (auto found = job->FindProcess(process_koid))
return found;
}
return nullptr;
}
} // namespace debug_agent