~aleteoryx/muditaos

ref: 34ee674f371c0588f1c47bb0ce6fdda517e2ace0 muditaos/module-services/service-appmgr/model/ApplicationsRegistry.cpp -rw-r--r-- 1.5 KiB
34ee674f — Mateusz Piesta [MOS-939] Apply target update scripts 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved.
// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md

#include "ApplicationsRegistry.hpp"

#include <apps-common/ApplicationLauncher.hpp>

namespace app::manager
{
    ApplicationsRegistry::ApplicationsRegistry(std::vector<std::unique_ptr<app::ApplicationLauncher>> &&launchers)
    {
        std::vector<std::unique_ptr<app::ApplicationLauncher>> container = std::move(launchers);
        for (auto &&launcher : container) {
            applications.push_back(std::make_unique<ApplicationHandle>(std::move(launcher)));
        }
    }

    auto ApplicationsRegistry::getAll() const noexcept -> const ApplicationsContainer &
    {
        return applications;
    }

    auto ApplicationsRegistry::findByName(const ApplicationName &name) const -> ApplicationHandle *
    {
        auto it = std::find_if(
            applications.begin(), applications.end(), [&name](const auto &app) { return app->name() == name; });
        if (it == applications.end()) {
            return nullptr;
        }
        return it->get();
    }

    auto ApplicationsRegistry::findByAction(actions::ActionId action) const -> std::vector<ApplicationHandle *>
    {
        std::vector<ApplicationHandle *> actionHandlers;
        for (const auto &app : applications) {
            if (app->handles(action)) {
                actionHandlers.push_back(app.get());
            }
        }
        return actionHandlers;
    }
} // namespace app::manager