// use actix::prelude::*; use tracing::Instrument as _; use crate as actor; impl Handler for actor::RepoActor { type Result = (); #[tracing::instrument(name = "RepoActor::LoadConfigFromRepo", skip_all, fields(repo = %self.repo_details))] fn handle( &mut self, _msg: actor::messages::LoadConfigFromRepo, ctx: &mut Self::Context, ) -> Self::Result { tracing::debug!("Handler: LoadConfigFromRepo: start"); let Some(open_repository) = &self.open_repository else { return; }; let open_repository = open_repository.duplicate(); let repo_details = self.repo_details.clone(); let addr = ctx.address(); let log = self.log.clone(); async move { match actor::load::config_from_repository(repo_details, &*open_repository).await { Ok(repo_config) => { actor::logger(&log, "send: LoadedConfig"); addr.do_send(actor::messages::ReceiveRepoConfig::new(repo_config)) } Err(err) => tracing::warn!(?err, "Failed to load config"), // TODO: (#95) should notify user } } .in_current_span() .into_actor(self) .wait(ctx); tracing::debug!("Handler: LoadConfigFromRepo: finish"); } }