Skip to content

Commit 4a75d67

Browse files
committed
fixup! Expose tier storage configuration across the FFI boundary
move IO error handling to dedicated file
1 parent 53d157f commit 4a75d67

File tree

3 files changed

+107
-98
lines changed

3 files changed

+107
-98
lines changed

src/ffi/io.rs

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
// This file is Copyright its original authors, visible in version control history.
2+
//
3+
// This file is licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
4+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
5+
// http://opensource.org/licenses/MIT>, at your option. You may not use this file except in
6+
7+
#[derive(Debug)]
8+
#[cfg_attr(feature = "uniffi", derive(uniffi::Error))]
9+
pub enum IOError {
10+
NotFound,
11+
PermissionDenied,
12+
ConnectionRefused,
13+
ConnectionReset,
14+
ConnectionAborted,
15+
NotConnected,
16+
AddrInUse,
17+
AddrNotAvailable,
18+
BrokenPipe,
19+
AlreadyExists,
20+
WouldBlock,
21+
InvalidInput,
22+
InvalidData,
23+
TimedOut,
24+
WriteZero,
25+
Interrupted,
26+
UnexpectedEof,
27+
Other,
28+
}
29+
30+
impl From<bitcoin::io::Error> for IOError {
31+
fn from(error: bitcoin::io::Error) -> Self {
32+
match error.kind() {
33+
bitcoin::io::ErrorKind::NotFound => IOError::NotFound,
34+
bitcoin::io::ErrorKind::PermissionDenied => IOError::PermissionDenied,
35+
bitcoin::io::ErrorKind::ConnectionRefused => IOError::ConnectionRefused,
36+
bitcoin::io::ErrorKind::ConnectionReset => IOError::ConnectionReset,
37+
bitcoin::io::ErrorKind::ConnectionAborted => IOError::ConnectionAborted,
38+
bitcoin::io::ErrorKind::NotConnected => IOError::NotConnected,
39+
bitcoin::io::ErrorKind::AddrInUse => IOError::AddrInUse,
40+
bitcoin::io::ErrorKind::AddrNotAvailable => IOError::AddrNotAvailable,
41+
bitcoin::io::ErrorKind::BrokenPipe => IOError::BrokenPipe,
42+
bitcoin::io::ErrorKind::AlreadyExists => IOError::AlreadyExists,
43+
bitcoin::io::ErrorKind::WouldBlock => IOError::WouldBlock,
44+
bitcoin::io::ErrorKind::InvalidInput => IOError::InvalidInput,
45+
bitcoin::io::ErrorKind::InvalidData => IOError::InvalidData,
46+
bitcoin::io::ErrorKind::TimedOut => IOError::TimedOut,
47+
bitcoin::io::ErrorKind::WriteZero => IOError::WriteZero,
48+
bitcoin::io::ErrorKind::Interrupted => IOError::Interrupted,
49+
bitcoin::io::ErrorKind::UnexpectedEof => IOError::UnexpectedEof,
50+
bitcoin::io::ErrorKind::Other => IOError::Other,
51+
}
52+
}
53+
}
54+
55+
impl From<IOError> for bitcoin::io::Error {
56+
fn from(error: IOError) -> Self {
57+
match error {
58+
IOError::NotFound => bitcoin::io::ErrorKind::NotFound.into(),
59+
IOError::PermissionDenied => bitcoin::io::ErrorKind::PermissionDenied.into(),
60+
IOError::ConnectionRefused => bitcoin::io::ErrorKind::ConnectionRefused.into(),
61+
IOError::ConnectionReset => bitcoin::io::ErrorKind::ConnectionReset.into(),
62+
IOError::ConnectionAborted => bitcoin::io::ErrorKind::ConnectionAborted.into(),
63+
IOError::NotConnected => bitcoin::io::ErrorKind::NotConnected.into(),
64+
IOError::AddrInUse => bitcoin::io::ErrorKind::AddrInUse.into(),
65+
IOError::AddrNotAvailable => bitcoin::io::ErrorKind::AddrNotAvailable.into(),
66+
IOError::BrokenPipe => bitcoin::io::ErrorKind::BrokenPipe.into(),
67+
IOError::AlreadyExists => bitcoin::io::ErrorKind::AlreadyExists.into(),
68+
IOError::WouldBlock => bitcoin::io::ErrorKind::WouldBlock.into(),
69+
IOError::InvalidInput => bitcoin::io::ErrorKind::InvalidInput.into(),
70+
IOError::InvalidData => bitcoin::io::ErrorKind::InvalidData.into(),
71+
IOError::TimedOut => bitcoin::io::ErrorKind::TimedOut.into(),
72+
IOError::WriteZero => bitcoin::io::ErrorKind::WriteZero.into(),
73+
IOError::Interrupted => bitcoin::io::ErrorKind::Interrupted.into(),
74+
IOError::UnexpectedEof => bitcoin::io::ErrorKind::UnexpectedEof.into(),
75+
IOError::Other => bitcoin::io::ErrorKind::Other.into(),
76+
}
77+
}
78+
}
79+
80+
impl std::fmt::Display for IOError {
81+
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
82+
match self {
83+
IOError::NotFound => write!(f, "NotFound"),
84+
IOError::PermissionDenied => write!(f, "PermissionDenied"),
85+
IOError::ConnectionRefused => write!(f, "ConnectionRefused"),
86+
IOError::ConnectionReset => write!(f, "ConnectionReset"),
87+
IOError::ConnectionAborted => write!(f, "ConnectionAborted"),
88+
IOError::NotConnected => write!(f, "NotConnected"),
89+
IOError::AddrInUse => write!(f, "AddrInUse"),
90+
IOError::AddrNotAvailable => write!(f, "AddrNotAvailable"),
91+
IOError::BrokenPipe => write!(f, "BrokenPipe"),
92+
IOError::AlreadyExists => write!(f, "AlreadyExists"),
93+
IOError::WouldBlock => write!(f, "WouldBlock"),
94+
IOError::InvalidInput => write!(f, "InvalidInput"),
95+
IOError::InvalidData => write!(f, "InvalidData"),
96+
IOError::TimedOut => write!(f, "TimedOut"),
97+
IOError::WriteZero => write!(f, "WriteZero"),
98+
IOError::Interrupted => write!(f, "Interrupted"),
99+
IOError::UnexpectedEof => write!(f, "UnexpectedEof"),
100+
IOError::Other => write!(f, "Other"),
101+
}
102+
}
103+
}

src/ffi/mod.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license <LICENSE-MIT or
55
// http://opensource.org/licenses/MIT>, at your option. You may not use this file except in
66

7+
mod io;
8+
#[cfg(feature = "uniffi")]
9+
pub use io::*;
710
#[cfg(feature = "uniffi")]
811
mod types;
912

src/ffi/types.rs

Lines changed: 1 addition & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ use crate::builder::sanitize_alias;
5757
pub use crate::config::{default_config, ElectrumSyncConfig, EsploraSyncConfig, TorConfig};
5858
pub use crate::entropy::{generate_entropy_mnemonic, NodeEntropy, WordCount};
5959
use crate::error::Error;
60+
use crate::ffi::io::IOError;
6061
use crate::io::utils::check_namespace_key_validity;
6162
pub use crate::liquidity::LSPS1OrderStatus;
6263
pub use crate::logger::{LogLevel, LogRecord, LogWriter};
@@ -154,104 +155,6 @@ impl VssClientHeaderProvider for VssHeaderProviderAdapter {
154155
}
155156
}
156157

157-
#[derive(Debug)]
158-
#[cfg_attr(feature = "uniffi", derive(uniffi::Error))]
159-
pub enum IOError {
160-
NotFound,
161-
PermissionDenied,
162-
ConnectionRefused,
163-
ConnectionReset,
164-
ConnectionAborted,
165-
NotConnected,
166-
AddrInUse,
167-
AddrNotAvailable,
168-
BrokenPipe,
169-
AlreadyExists,
170-
WouldBlock,
171-
InvalidInput,
172-
InvalidData,
173-
TimedOut,
174-
WriteZero,
175-
Interrupted,
176-
UnexpectedEof,
177-
Other,
178-
}
179-
180-
impl From<bitcoin::io::Error> for IOError {
181-
fn from(error: bitcoin::io::Error) -> Self {
182-
match error.kind() {
183-
bitcoin::io::ErrorKind::NotFound => IOError::NotFound,
184-
bitcoin::io::ErrorKind::PermissionDenied => IOError::PermissionDenied,
185-
bitcoin::io::ErrorKind::ConnectionRefused => IOError::ConnectionRefused,
186-
bitcoin::io::ErrorKind::ConnectionReset => IOError::ConnectionReset,
187-
bitcoin::io::ErrorKind::ConnectionAborted => IOError::ConnectionAborted,
188-
bitcoin::io::ErrorKind::NotConnected => IOError::NotConnected,
189-
bitcoin::io::ErrorKind::AddrInUse => IOError::AddrInUse,
190-
bitcoin::io::ErrorKind::AddrNotAvailable => IOError::AddrNotAvailable,
191-
bitcoin::io::ErrorKind::BrokenPipe => IOError::BrokenPipe,
192-
bitcoin::io::ErrorKind::AlreadyExists => IOError::AlreadyExists,
193-
bitcoin::io::ErrorKind::WouldBlock => IOError::WouldBlock,
194-
bitcoin::io::ErrorKind::InvalidInput => IOError::InvalidInput,
195-
bitcoin::io::ErrorKind::InvalidData => IOError::InvalidData,
196-
bitcoin::io::ErrorKind::TimedOut => IOError::TimedOut,
197-
bitcoin::io::ErrorKind::WriteZero => IOError::WriteZero,
198-
bitcoin::io::ErrorKind::Interrupted => IOError::Interrupted,
199-
bitcoin::io::ErrorKind::UnexpectedEof => IOError::UnexpectedEof,
200-
bitcoin::io::ErrorKind::Other => IOError::Other,
201-
}
202-
}
203-
}
204-
205-
impl From<IOError> for bitcoin::io::Error {
206-
fn from(error: IOError) -> Self {
207-
match error {
208-
IOError::NotFound => bitcoin::io::ErrorKind::NotFound.into(),
209-
IOError::PermissionDenied => bitcoin::io::ErrorKind::PermissionDenied.into(),
210-
IOError::ConnectionRefused => bitcoin::io::ErrorKind::ConnectionRefused.into(),
211-
IOError::ConnectionReset => bitcoin::io::ErrorKind::ConnectionReset.into(),
212-
IOError::ConnectionAborted => bitcoin::io::ErrorKind::ConnectionAborted.into(),
213-
IOError::NotConnected => bitcoin::io::ErrorKind::NotConnected.into(),
214-
IOError::AddrInUse => bitcoin::io::ErrorKind::AddrInUse.into(),
215-
IOError::AddrNotAvailable => bitcoin::io::ErrorKind::AddrNotAvailable.into(),
216-
IOError::BrokenPipe => bitcoin::io::ErrorKind::BrokenPipe.into(),
217-
IOError::AlreadyExists => bitcoin::io::ErrorKind::AlreadyExists.into(),
218-
IOError::WouldBlock => bitcoin::io::ErrorKind::WouldBlock.into(),
219-
IOError::InvalidInput => bitcoin::io::ErrorKind::InvalidInput.into(),
220-
IOError::InvalidData => bitcoin::io::ErrorKind::InvalidData.into(),
221-
IOError::TimedOut => bitcoin::io::ErrorKind::TimedOut.into(),
222-
IOError::WriteZero => bitcoin::io::ErrorKind::WriteZero.into(),
223-
IOError::Interrupted => bitcoin::io::ErrorKind::Interrupted.into(),
224-
IOError::UnexpectedEof => bitcoin::io::ErrorKind::UnexpectedEof.into(),
225-
IOError::Other => bitcoin::io::ErrorKind::Other.into(),
226-
}
227-
}
228-
}
229-
230-
impl std::fmt::Display for IOError {
231-
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
232-
match self {
233-
IOError::NotFound => write!(f, "NotFound"),
234-
IOError::PermissionDenied => write!(f, "PermissionDenied"),
235-
IOError::ConnectionRefused => write!(f, "ConnectionRefused"),
236-
IOError::ConnectionReset => write!(f, "ConnectionReset"),
237-
IOError::ConnectionAborted => write!(f, "ConnectionAborted"),
238-
IOError::NotConnected => write!(f, "NotConnected"),
239-
IOError::AddrInUse => write!(f, "AddrInUse"),
240-
IOError::AddrNotAvailable => write!(f, "AddrNotAvailable"),
241-
IOError::BrokenPipe => write!(f, "BrokenPipe"),
242-
IOError::AlreadyExists => write!(f, "AlreadyExists"),
243-
IOError::WouldBlock => write!(f, "WouldBlock"),
244-
IOError::InvalidInput => write!(f, "InvalidInput"),
245-
IOError::InvalidData => write!(f, "InvalidData"),
246-
IOError::TimedOut => write!(f, "TimedOut"),
247-
IOError::WriteZero => write!(f, "WriteZero"),
248-
IOError::Interrupted => write!(f, "Interrupted"),
249-
IOError::UnexpectedEof => write!(f, "UnexpectedEof"),
250-
IOError::Other => write!(f, "Other"),
251-
}
252-
}
253-
}
254-
255158
/// FFI-safe version of [`DynStoreTrait`].
256159
///
257160
/// [`DynStoreTrait`]: crate::types::DynStoreTrait

0 commit comments

Comments
 (0)