Add new features into boot sequence app info
[platform/core/appfw/aul-1.git] / tool / aulctl / boot_sequence / app_info.hh
1 /*
2  * Copyright (c) 2022 Samsung Electronics Co., Ltd. All rights reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef AULCTL_BOOT_SEQUENCE_APP_INFO_HH_
18 #define AULCTL_BOOT_SEQUENCE_APP_INFO_HH_
19
20 #include <bundle_cpp.h>
21
22 #include <chrono>
23 #include <map>
24 #include <set>
25 #include <string>
26 #include <vector>
27
28 namespace aul::internal {
29
30 namespace boot_sequence {
31
32 class AppInfo {
33  public:
34   class Builder {
35    public:
36     Builder& SetAppId(const tizen_base::Bundle& args);
37     Builder& SetUid(const tizen_base::Bundle& args);
38     Builder& SetPriority(const tizen_base::Bundle& args);
39     Builder& SetAfter(const tizen_base::Bundle& args);
40     Builder& SetBefore(const tizen_base::Bundle& args);
41     Builder& SetRequires(const tizen_base::Bundle& args);
42     Builder& SetConflicts(const tizen_base::Bundle& args);
43     Builder& SetArgs(const tizen_base::Bundle& args);
44     Builder& SetBackgroundLaunch(const tizen_base::Bundle& args);
45     Builder& SetWaitUntilReady(const tizen_base::Bundle& args);
46     Builder& SetTimeout(const tizen_base::Bundle& args);
47     Builder& SetActiveState(const tizen_base::Bundle& args);
48     Builder& SetSubState(const tizen_base::Bundle& args);
49     Builder& SetBeginTimestamp(const tizen_base::Bundle& args);
50     Builder& SetEndTimestamp(const tizen_base::Bundle& args);
51     Builder& SetSocketReadyTimestamp(const tizen_base::Bundle& args);
52     Builder& SetTerminatedTimestamp(const tizen_base::Bundle& args);
53     Builder& SetStatusMessage(const tizen_base::Bundle& args);
54
55     AppInfo* Build() const;
56
57    private:
58     std::string appid_;
59     uid_t uid_;
60     int priority_;
61     std::set<std::string> after_;
62     std::set<std::string> before_;
63     std::set<std::string> requires_;
64     std::set<std::string> conflicts_;
65     tizen_base::Bundle args_;
66     std::string active_state_;
67     std::string sub_state_;
68     std::string begin_timestamp_;
69     std::string end_timestamp_;
70     std::string socket_ready_timestamp_;
71     std::string terminated_timestamp_;
72     bool background_launch_;
73     bool wait_until_ready_;
74     unsigned int timeout_;
75     std::string status_msg_;
76   };
77
78   AppInfo(std::string appid, uid_t uid, int priority,
79           std::set<std::string> after, std::set<std::string> before,
80           std::set<std::string> requires, std::set<std::string> conflicts,
81           tizen_base::Bundle args,
82           std::string active_state, std::string sub_state,
83           std::string begin_timestamp, std::string end_timestamp,
84           std::string status_msg,
85           std::string socket_ready_timestamp, std::string terminated_timestamp,
86           bool background_launch, bool wait_until_ready, unsigned int timeout);
87
88   const std::string& GetAppId() const;
89   uid_t GetUid() const;
90   int GetPriority() const;
91
92   bool AfterContains(const std::string& appid);
93   const std::set<std::string>& AfterGet() const;
94
95   bool BeforeContains(const std::string& appid);
96   const std::set<std::string>& BeforeGet() const;
97
98   bool RequiresContains(const std::string& appid);
99   const std::set<std::string>& RequiresGet() const;
100
101   bool ConflictsContains(const std::string& appid);
102   const std::set<std::string>& ConflictsGet() const;
103
104   const tizen_base::Bundle& GetArgs() const;
105   bool IsBackgroundLaunch() const;
106   bool WaitUntilReady() const;
107   unsigned int GetTimeout() const;
108   const std::string& GetActiveState() const;
109   const std::string& GetSubState() const;
110   const std::string& GetBeginTimestamp() const;
111   const std::string& GetEndTimestamp() const;
112   const std::string& GetSocketReadyTimestamp() const;
113   const std::string& GetTerminatedTimestamp() const;
114   const std::string& GetStatusMessage() const;
115
116  private:
117   std::string appid_;
118   uid_t uid_;
119   int priority_;
120   std::set<std::string> after_;
121   std::set<std::string> before_;
122   std::set<std::string> requires_;
123   std::set<std::string> conflicts_;
124   std::vector<std::string> required_by_;
125   tizen_base::Bundle args_;
126   std::string active_state_;
127   std::string sub_state_;
128   std::string begin_timestamp_;
129   std::string end_timestamp_;
130   std::string socket_ready_timestamp_;
131   std::string terminated_timestamp_;
132   bool background_launch_;
133   bool wait_until_ready_;
134   unsigned int timeout_;
135   std::string status_msg_;
136 };
137
138 }  // namespace boot_sequence
139
140 }  // namespace aul::internal
141
142 #endif  // AULCTL_BOOT_SEQUENCE_APP_INFO_HH_