| // Copyright 2019 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 "lib/sys/cpp/termination_reason.h" | |
| #include <sstream> | |
| #include <string> | |
| namespace sys { | |
| std::string TerminationReasonToString(fuchsia::sys::TerminationReason termination_reason) { | |
| switch (termination_reason) { | |
| case fuchsia::sys::TerminationReason::UNKNOWN: | |
| return "UNKNOWN"; | |
| case fuchsia::sys::TerminationReason::EXITED: | |
| return "EXITED"; | |
| case fuchsia::sys::TerminationReason::URL_INVALID: | |
| return "URL_INVALID"; | |
| case fuchsia::sys::TerminationReason::PACKAGE_NOT_FOUND: | |
| return "PACKAGE_NOT_FOUND"; | |
| case fuchsia::sys::TerminationReason::INTERNAL_ERROR: | |
| return "INTERNAL_ERROR"; | |
| case fuchsia::sys::TerminationReason::PROCESS_CREATION_ERROR: | |
| return "PROCESS_CREATION_ERROR"; | |
| case fuchsia::sys::TerminationReason::RUNNER_FAILED: | |
| return "RUNNER_FAILED"; | |
| case fuchsia::sys::TerminationReason::RUNNER_TERMINATED: | |
| return "RUNNER_TERMINATED"; | |
| case fuchsia::sys::TerminationReason::REALM_SHUTTING_DOWN: | |
| return "REALM_SHUTTING_DOWN"; | |
| default: | |
| return std::to_string(static_cast<int>(termination_reason)); | |
| } | |
| } | |
| std::string HumanReadableTerminationReason(fuchsia::sys::TerminationReason termination_reason) { | |
| switch (termination_reason) { | |
| case fuchsia::sys::TerminationReason::EXITED: | |
| return "exited"; | |
| case fuchsia::sys::TerminationReason::URL_INVALID: | |
| return "url invalid"; | |
| case fuchsia::sys::TerminationReason::PACKAGE_NOT_FOUND: | |
| return "not found"; | |
| case fuchsia::sys::TerminationReason::PROCESS_CREATION_ERROR: | |
| return "failed to spawn process"; | |
| case fuchsia::sys::TerminationReason::RUNNER_FAILED: | |
| return "failed to start runner for process"; | |
| case fuchsia::sys::TerminationReason::RUNNER_TERMINATED: | |
| return "runner failed to execute"; | |
| case fuchsia::sys::TerminationReason::REALM_SHUTTING_DOWN: | |
| return "realm shutting down"; | |
| default: | |
| std::ostringstream out; | |
| out << "failed to create component (" << TerminationReasonToString(termination_reason) << ")"; | |
| return out.str(); | |
| } | |
| } | |
| } // namespace sys |