blob: 6c547b61b5cc25fb674b5654b4be849ded110772 [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/zircon_job_handle.h"
#include "src/developer/debug/debug_agent/zircon_process_handle.h"
#include "src/developer/debug/debug_agent/zircon_utils.h"
namespace debug_agent {
ZirconJobHandle::ZirconJobHandle(zx::job j)
: job_koid_(zircon::KoidForObject(j)), job_(std::move(j)) {}
ZirconJobHandle::ZirconJobHandle(const ZirconJobHandle& other) : job_koid_(other.job_koid_) {
other.job_.duplicate(ZX_RIGHT_SAME_RIGHTS, &job_);
}
std::unique_ptr<JobHandle> ZirconJobHandle::Duplicate() const {
return std::make_unique<ZirconJobHandle>(*this);
}
std::string ZirconJobHandle::GetName() const { return zircon::NameForObject(job_); }
std::vector<std::unique_ptr<JobHandle>> ZirconJobHandle::GetChildJobs() const {
std::vector<std::unique_ptr<JobHandle>> result;
for (auto& zx_job : zircon::GetChildJobs(job_))
result.push_back(std::make_unique<ZirconJobHandle>(std::move(zx_job)));
return result;
}
std::vector<std::unique_ptr<ProcessHandle>> ZirconJobHandle::GetChildProcesses() const {
std::vector<std::unique_ptr<ProcessHandle>> result;
for (auto& zx_process : zircon::GetChildProcesses(job_))
result.push_back(std::make_unique<ZirconProcessHandle>(std::move(zx_process)));
return result;
}
} // namespace debug_agent