ferroui_splat/logging/
modules.rs1use super::{DebugLogger, DefaultLogManager, ILogManager, ILogger};
4use crate::builder::IModule;
5use crate::service_location::{
6 IMutableDependencyResolver, IReadonlyDependencyResolver, MutableDependencyResolverExt,
7};
8use std::rc::Rc;
9
10#[derive(Default)]
13pub struct SplatLoggerModule;
14
15impl SplatLoggerModule {
16 pub fn new() -> Self {
18 Self
19 }
20}
21
22impl IModule for SplatLoggerModule {
23 fn configure(&self, resolver: &dyn IMutableDependencyResolver) {
24 if resolver.has_registration::<dyn ILogger>() {
25 return;
26 }
27 let debug_logger: Rc<dyn ILogger> = Rc::new(DebugLogger::new());
28 resolver.register::<dyn ILogger>(move || Some(debug_logger.clone()));
29 }
30}
31
32pub struct SplatLogManagerModule {
35 current: Rc<dyn IReadonlyDependencyResolver>,
36}
37
38impl SplatLogManagerModule {
39 pub fn new(current: Rc<dyn IReadonlyDependencyResolver>) -> Self {
41 Self { current }
42 }
43}
44
45impl IModule for SplatLogManagerModule {
46 fn configure(&self, resolver: &dyn IMutableDependencyResolver) {
47 if resolver.has_registration::<dyn ILogManager>() {
48 return;
49 }
50 let current = self.current.clone();
51 resolver.register::<dyn ILogManager>(move || {
52 Some(Rc::new(DefaultLogManager::new(current.clone())) as Rc<dyn ILogManager>)
53 });
54 }
55}