add a ChannelUnavailable error
[rust-lightning] / src / util / errors.rs
1 //! Error types live here.
2
3 use std::fmt;
4
5 /// Indicates an error on the client's part (usually some variant of attempting to use too-low or
6 /// too-high values)
7 pub enum APIError {
8         /// Indicates the API was wholly misused (see err for more). Cases where these can be returned
9         /// are documented, but generally indicates some precondition of a function was violated.
10         APIMisuseError {
11                 /// A human-readable error message
12                 err: &'static str
13         },
14         /// Due to a high feerate, we were unable to complete the request.
15         /// For example, this may be returned if the feerate implies we cannot open a channel at the
16         /// requested value, but opening a larger channel would succeed.
17         FeeRateTooHigh {
18                 /// A human-readable error message
19                 err: String,
20                 /// The feerate which was too high.
21                 feerate: u64
22         },
23
24         /// Invalid route or parameters (cltv_delta, fee, pubkey) was specified
25         RouteError {
26                 /// A human-readable error message
27                 err: &'static str
28         },
29
30
31         /// We were unable to complete the request since channel is disconnected or
32         /// shutdown in progress initiated by remote
33         ChannelUnavailable {
34                 /// A human-readable error message
35                 err: &'static str
36         }
37 }
38
39 impl fmt::Debug for APIError {
40         fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
41                 match *self {
42                         APIError::APIMisuseError {ref err} => f.write_str(err),
43                         APIError::FeeRateTooHigh {ref err, ref feerate} => write!(f, "{} feerate: {}", err, feerate),
44                         APIError::RouteError {ref err} => f.write_str(err),
45                         APIError::ChannelUnavailable {ref err} => f.write_str(err),
46                 }
47         }
48 }