use cfgsync_adapter::{ DynCfgsyncError, MaterializationResult, MaterializedArtifacts, RegistrationSnapshot, RegistrationSnapshotMaterializer, }; use cfgsync_artifacts::{ArtifactFile, ArtifactSet}; use cfgsync_runtime::serve_cfgsync; struct ExampleMaterializer; impl RegistrationSnapshotMaterializer for ExampleMaterializer { fn materialize_snapshot( &self, registrations: &RegistrationSnapshot, ) -> Result { if registrations.is_empty() { return Ok(MaterializationResult::NotReady); } let nodes = registrations.iter().map(|registration| { ( registration.identifier.clone(), ArtifactSet::new(vec![ArtifactFile::new( "/config.yaml", format!("id: {}\n", registration.identifier), )]), ) }); Ok(MaterializationResult::ready( MaterializedArtifacts::from_nodes(nodes), )) } } #[tokio::main] async fn main() -> anyhow::Result<()> { serve_cfgsync(4400, ExampleMaterializer).await?; Ok(()) }