]> Untitled Git - bdk/commitdiff
[blockchain] add Error::OfflineClient
authorAlekos Filini <alekos.filini@gmail.com>
Wed, 6 May 2020 14:50:03 +0000 (16:50 +0200)
committerAlekos Filini <alekos.filini@gmail.com>
Wed, 6 May 2020 14:50:03 +0000 (16:50 +0200)
src/blockchain/electrum.rs
src/error.rs

index 592953e231c178982b8dddefff3ccc450da2b9ac..63903fad37bfddc29ab28a42ee073c29fa8fc5ad 100644 (file)
@@ -84,7 +84,7 @@ impl<T: Read + Write> OnlineBlockchain for ElectrumBlockchain<T> {
             let call_result = self
                 .0
                 .as_mut()
-                .unwrap()
+                .ok_or(Error::OfflineClient)?
                 .batch_script_get_history(chunk.iter())?;
 
             for (script, history) in chunk.into_iter().zip(call_result.into_iter()) {
@@ -127,7 +127,7 @@ impl<T: Read + Write> OnlineBlockchain for ElectrumBlockchain<T> {
             let call_result = self
                 .0
                 .as_mut()
-                .unwrap()
+                .ok_or(Error::OfflineClient)?
                 .batch_script_list_unspent(scripts)?;
 
             // check which utxos are actually still unspent
@@ -175,7 +175,7 @@ impl<T: Read + Write> OnlineBlockchain for ElectrumBlockchain<T> {
         Ok(self
             .0
             .as_mut()
-            .unwrap()
+            .ok_or(Error::OfflineClient)?
             .transaction_get(txid)
             .map(Option::Some)?)
     }
@@ -184,7 +184,7 @@ impl<T: Read + Write> OnlineBlockchain for ElectrumBlockchain<T> {
         Ok(self
             .0
             .as_mut()
-            .unwrap()
+            .ok_or(Error::OfflineClient)?
             .transaction_broadcast(tx)
             .map(|_| ())?)
     }
@@ -193,7 +193,7 @@ impl<T: Read + Write> OnlineBlockchain for ElectrumBlockchain<T> {
         Ok(self
             .0
             .as_mut()
-            .unwrap()
+            .ok_or(Error::OfflineClient)?
             .block_headers_subscribe()
             .map(|data| data.height)?)
     }
@@ -232,7 +232,11 @@ impl<T: Read + Write> ElectrumBlockchain<T> {
                 // went wrong
                 saved_tx.transaction.unwrap()
             }
-            None => self.0.as_mut().unwrap().transaction_get(&txid)?,
+            None => self
+                .0
+                .as_mut()
+                .ok_or(Error::OfflineClient)?
+                .transaction_get(&txid)?,
         };
 
         let mut incoming: u64 = 0;
index 64fb07a72c52c00fc3ff2751c5351022f544d660..320daac3fa0827d0fbe6f728ed60eee7a32a449e 100644 (file)
@@ -29,6 +29,7 @@ pub enum Error {
 
     // Blockchain interface errors
     Uncapable(crate::blockchain::Capability),
+    OfflineClient,
     InvalidProgressValue(f32),
     ProgressUpdateError,
     MissingCachedAddresses,