Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 43c0482b authored by Zach Johnson's avatar Zach Johnson
Browse files

rusty-gd: make RegistryBuilder follow the builder pattern

Bug: 171749953
Tag: #gd-refactor
Test: gd/cert/run --rhost SimpleHalTest
Change-Id: I0f32438926212a99a10d429922cc046d49b86860
parent b9b21034
Loading
Loading
Loading
Loading
+1 −5
Original line number Diff line number Diff line
@@ -104,11 +104,7 @@ impl FacadeServiceManager {
            while let Some(cmd) = rx.recv().await {
                match cmd {
                    LifecycleCommand::Start { req, done } => {
                        let registry = {
                            let mut builder = RegistryBuilder::new();
                            builder.register_module(stack_module);
                            Arc::new(builder.build())
                        };
                        let registry = Arc::new(RegistryBuilder::new().register_module(stack_module).build());

                        registry.inject(local_rt.clone()).await;
                        if let Some(rc_port) = rootcanal_port {
+4 −3
Original line number Diff line number Diff line
@@ -139,11 +139,12 @@ pub fn module(item: TokenStream) -> TokenStream {
    let submodule_idents = module.submodules.iter();
    let emitted_code = quote! {
        #[doc(hidden)]
        pub fn #init_ident(builder: &mut gddi::RegistryBuilder) {
        #[allow(missing_docs)]
        pub fn #init_ident(builder: gddi::RegistryBuilder) -> gddi::RegistryBuilder {
            // Register all providers on this module
            #(builder.register_provider::<#types>(Box::new(#provider_idents));)*
            builder#(.register_provider::<#types>(Box::new(#provider_idents)))*
            // Register all submodules on this module
            #(builder.register_module(#submodule_idents);)*
            #(.register_module(#submodule_idents))*
        }
    };
    emitted_code.into()
+6 −4
Original line number Diff line number Diff line
@@ -45,17 +45,19 @@ impl RegistryBuilder {
    }

    /// Registers a module with this registry
    pub fn register_module<F>(&mut self, init: F)
    pub fn register_module<F>(self, init: F) -> Self
    where
        F: Fn(&mut Self),
        F: Fn(Self) -> Self,
    {
        init(self);
        init(self)
    }

    /// Registers a provider function with this registry
    pub fn register_provider<T: 'static>(&mut self, f: ProviderFnBox) {
    pub fn register_provider<T: 'static>(mut self, f: ProviderFnBox) -> Self {
        self.providers
            .insert(TypeId::of::<T>(), Provider { f: Arc::new(f) });

        self
    }

    /// Construct the Registry from this builder