X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning-persister%2Fsrc%2Flib.rs;h=4500621276dbef797ac42f94008cd72f2cfb8686;hb=83595dbfdc9669e52b7095a6c2bc087a4398cc1d;hp=b8212f0fc705b3bac8e6925df3f0a1deb375116b;hpb=99073c74ddce0d7b7a09eca1a4d938704309eb19;p=rust-lightning diff --git a/lightning-persister/src/lib.rs b/lightning-persister/src/lib.rs index b8212f0f..45006212 100644 --- a/lightning-persister/src/lib.rs +++ b/lightning-persister/src/lib.rs @@ -3,6 +3,8 @@ #![deny(broken_intra_doc_links)] #![deny(missing_docs)] +#![cfg_attr(docsrs, feature(doc_auto_cfg))] + #![cfg_attr(all(test, feature = "_bench_unstable"), feature(test))] #[cfg(all(test, feature = "_bench_unstable"))] extern crate test; @@ -14,6 +16,7 @@ extern crate libc; use bitcoin::hash_types::{BlockHash, Txid}; use bitcoin::hashes::hex::{FromHex, ToHex}; +use lightning::routing::network_graph::NetworkGraph; use crate::util::DiskWriteable; use lightning::chain; use lightning::chain::chaininterface::{BroadcasterInterface, FeeEstimator}; @@ -25,7 +28,7 @@ use lightning::ln::channelmanager::ChannelManager; use lightning::util::logger::Logger; use lightning::util::ser::{ReadableArgs, Writeable}; use std::fs; -use std::io::{Cursor, Error}; +use std::io::{Cursor, Error, Write}; use std::ops::Deref; use std::path::{Path, PathBuf}; @@ -46,7 +49,7 @@ pub struct FilesystemPersister { } impl DiskWriteable for ChannelMonitor { - fn write_to_file(&self, writer: &mut fs::File) -> Result<(), Error> { + fn write_to_file(&self, writer: &mut W) -> Result<(), Error> { self.write(writer) } } @@ -59,7 +62,13 @@ where F::Target: FeeEstimator, L::Target: Logger, { - fn write_to_file(&self, writer: &mut fs::File) -> Result<(), std::io::Error> { + fn write_to_file(&self, writer: &mut W) -> Result<(), std::io::Error> { + self.write(writer) + } +} + +impl DiskWriteable for NetworkGraph { + fn write_to_file(&self, writer: &mut W) -> Result<(), std::io::Error> { self.write(writer) } } @@ -101,6 +110,13 @@ impl FilesystemPersister { util::write_to_file(path, "manager".to_string(), manager) } + /// Write the provided `NetworkGraph` to the path provided at `FilesystemPersister` + /// initialization, within a file called "network_graph" + pub fn persist_network_graph(data_dir: String, network_graph: &NetworkGraph) -> Result<(), std::io::Error> { + let path = PathBuf::from(data_dir); + util::write_to_file(path, "network_graph".to_string(), network_graph) + } + /// Read `ChannelMonitor`s from disk. pub fn read_channelmonitors ( &self, keys_manager: K