use super::{
MetadataPredicate, Node, NodeRegistryError, NodeRegistryReader, NodeRegistryWriter,
RwNodeRegistry,
};
pub struct NoOpNodeRegistry;
impl NodeRegistryReader for NoOpNodeRegistry {
fn list_nodes<'a, 'b: 'a>(
&'b self,
_predicates: &'a [MetadataPredicate],
) -> Result<Box<dyn Iterator<Item = Node> + Send + 'a>, NodeRegistryError> {
Ok(Box::new(std::iter::empty()))
}
fn fetch_node(&self, identity: &str) -> Result<Node, NodeRegistryError> {
Err(NodeRegistryError::NotFoundError(identity.to_string()))
}
fn count_nodes(&self, _predicates: &[MetadataPredicate]) -> Result<u32, NodeRegistryError> {
Ok(0)
}
}
impl NodeRegistryWriter for NoOpNodeRegistry {
fn insert_node(&self, _node: Node) -> Result<(), NodeRegistryError> {
Err(NodeRegistryError::UnableToAddNode(
"operation not supported".into(),
None,
))
}
fn delete_node(&self, identity: &str) -> Result<(), NodeRegistryError> {
Err(NodeRegistryError::NotFoundError(identity.to_string()))
}
}
impl RwNodeRegistry for NoOpNodeRegistry {
fn clone_box(&self) -> Box<dyn RwNodeRegistry> {
Box::new(NoOpNodeRegistry)
}
}