1a1db01bdSopenharmony_ci/*
2a1db01bdSopenharmony_ci * Copyright (c) 2020 Huawei Device Co., Ltd.
3a1db01bdSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4a1db01bdSopenharmony_ci * you may not use this file except in compliance with the License.
5a1db01bdSopenharmony_ci * You may obtain a copy of the License at
6a1db01bdSopenharmony_ci *
7a1db01bdSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8a1db01bdSopenharmony_ci *
9a1db01bdSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10a1db01bdSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11a1db01bdSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12a1db01bdSopenharmony_ci * See the License for the specific language governing permissions and
13a1db01bdSopenharmony_ci * limitations under the License.
14a1db01bdSopenharmony_ci */
15a1db01bdSopenharmony_ci
16a1db01bdSopenharmony_ci#ifndef FOUNDATION_APP_MANAGER_H
17a1db01bdSopenharmony_ci#define FOUNDATION_APP_MANAGER_H
18a1db01bdSopenharmony_ci
19a1db01bdSopenharmony_ci#include <vector>
20a1db01bdSopenharmony_ci
21a1db01bdSopenharmony_ci#include "app_record.h"
22a1db01bdSopenharmony_ci#include "bundle_info.h"
23a1db01bdSopenharmony_ci#include "client/app_spawn_client.h"
24a1db01bdSopenharmony_ci#include "nocopyable.h"
25a1db01bdSopenharmony_ci
26a1db01bdSopenharmony_cinamespace OHOS {
27a1db01bdSopenharmony_ciclass AppManager : public NoCopyable {
28a1db01bdSopenharmony_cipublic:
29a1db01bdSopenharmony_ci    static AppManager &GetInstance()
30a1db01bdSopenharmony_ci    {
31a1db01bdSopenharmony_ci        static AppManager instance;
32a1db01bdSopenharmony_ci        return instance;
33a1db01bdSopenharmony_ci    }
34a1db01bdSopenharmony_ci    ~AppManager() = default;
35a1db01bdSopenharmony_ci    AppRecord *StartAppProcess(const BundleInfo &bundleInfo);
36a1db01bdSopenharmony_ci    AbilityMsStatus TerminateAppProcess(const char *bundleName);
37a1db01bdSopenharmony_ci    const AppRecord *GetAppRecordByToken(uint64_t token, pid_t callingPid);
38a1db01bdSopenharmony_ci    AppRecord *GetAppRecordByBundleName(const char *bundleName);
39a1db01bdSopenharmony_ci    void RemoveAppRecord(const AppRecord &appRecord);
40a1db01bdSopenharmony_ci    void RemoveAppRecord(const char *bundleName);
41a1db01bdSopenharmony_ciprivate:
42a1db01bdSopenharmony_ci    AppManager() = default;
43a1db01bdSopenharmony_ci    AppSpawnClient spawnClient_;
44a1db01bdSopenharmony_ci    std::vector<AppRecord *> appRecords_;
45a1db01bdSopenharmony_ci};
46a1db01bdSopenharmony_ci} // namespace OHOS
47a1db01bdSopenharmony_ci#endif // FOUNDATION_APP_MANAGER_H
48