Bug 1685822 [wpt PR 27117] - Update wpt metadata, a=testonly
[gecko.git] / remote / error.rs
blob7f88735059cf602506f8621c642bdde48c8048c9
1 // This Source Code Form is subject to the terms of the Mozilla Public
2 // License, v. 2.0. If a copy of the MPL was not distributed with this
3 // file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 use std::num;
7 use http;
8 use nserror::{
9     nsresult, NS_ERROR_ILLEGAL_VALUE, NS_ERROR_INVALID_ARG, NS_ERROR_LAUNCHED_CHILD_PROCESS,
10     NS_ERROR_NOT_AVAILABLE,
12 use thiserror::Error;
14 #[derive(Debug, Error)]
15 pub enum RemoteAgentError {
16     #[error("expected address syntax [<host>]:<port>: {0}")]
17     AddressSpec(#[from] http::uri::InvalidUri),
19     #[error("may only be instantiated in parent process")]
20     ChildProcess,
22     #[error("invalid port: {0}")]
23     InvalidPort(#[from] num::ParseIntError),
25     #[error("listener restricted to loopback devices")]
26     LoopbackRestricted,
28     #[error("missing port number")]
29     MissingPort,
31     #[error("unavailable")]
32     Unavailable,
34     #[error("error result {0}")]
35     XpCom(#[source] nsresult),
38 impl From<RemoteAgentError> for nsresult {
39     fn from(err: RemoteAgentError) -> nsresult {
40         use RemoteAgentError::*;
41         match err {
42             AddressSpec(_) | InvalidPort(_) => NS_ERROR_INVALID_ARG,
43             ChildProcess => NS_ERROR_LAUNCHED_CHILD_PROCESS,
44             LoopbackRestricted => NS_ERROR_ILLEGAL_VALUE,
45             MissingPort => NS_ERROR_INVALID_ARG,
46             Unavailable => NS_ERROR_NOT_AVAILABLE,
47             XpCom(result) => result,
48         }
49     }
52 impl From<nsresult> for RemoteAgentError {
53     fn from(result: nsresult) -> Self {
54         use RemoteAgentError::*;
55         match result {
56             NS_ERROR_NOT_AVAILABLE => Unavailable,
57             NS_ERROR_LAUNCHED_CHILD_PROCESS => ChildProcess,
58             x => RemoteAgentError::XpCom(x),
59         }
60     }