- fn persist_graph(&self, network_graph: &NetworkGraph) -> Result<(), std::io::Error> {
- FilesystemPersister::persist_network_graph(self.data_dir.clone(), network_graph)
+ fn with_graph_error(self, error: std::io::ErrorKind, message: &'static str) -> Self {
+ Self { graph_error: Some((error, message)), ..self }
+ }
+
+ fn with_manager_error(self, error: std::io::ErrorKind, message: &'static str) -> Self {
+ Self { manager_error: Some((error, message)), ..self }
+ }
+
+ fn with_scorer_error(self, error: std::io::ErrorKind, message: &'static str) -> Self {
+ Self { scorer_error: Some((error, message)), ..self }
+ }
+ }
+
+ impl KVStorePersister for Persister {
+ fn persist<W: Writeable>(&self, key: &str, object: &W) -> std::io::Result<()> {
+ if key == "manager" {
+ if let Some((error, message)) = self.manager_error {
+ return Err(std::io::Error::new(error, message))
+ }
+ }
+
+ if key == "network_graph" {
+ if let Some((error, message)) = self.graph_error {
+ return Err(std::io::Error::new(error, message))
+ }
+ }
+
+ if key == "scorer" {
+ if let Some((error, message)) = self.scorer_error {
+ return Err(std::io::Error::new(error, message))
+ }
+ }
+
+ self.filesystem_persister.persist(key, object)