Init basesystem source codes.
[staging/basesystem.git] / systemservice / system_manager / server / include / ss_sm_dynamic_launcher.h
1 /*
2  * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
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 ///////////////////////////////////////////////////////////////////////////////
18 /// \ingroup  tag_SystemManager
19 /// \brief    This file provides support for System Manager process launching.
20 ///
21 ///////////////////////////////////////////////////////////////////////////////
22
23 #ifndef SS_SM_DYNAMIC_LAUNCHER_H_  // NOLINT
24 #define SS_SM_DYNAMIC_LAUNCHER_H_
25
26 #include <native_service/frameworkunified_types.h>
27 #include <system_service/interfaceunified_system_types.h>
28 #include <vector>
29
30 #include "ss_sm_config.h"
31
32 using std::vector;
33
34
35 typedef struct _tDynamicLaunchParams {
36   SS_SOURCE source;
37   const PCHAR source_name;
38   const PCHAR before_group_name;
39   const PCHAR start_group_name;
40   const PCHAR after_group_name;
41   const PCHAR aviage_trigger_name;
42   BOOL  group_trigger;
43 } DynamicLaunchInfo;
44
45
46 class DynamicLaunchBase {
47  public:
48   DynamicLaunchBase();
49   virtual ~DynamicLaunchBase();
50   UI_32 get_id() const;
51   UI_32 advance_id();
52   UI_32 decrement_id();
53   BOOL  is_begin();
54   BOOL  is_end();
55   VOID  to_begin();
56   VOID  to_end();
57   VOID  print_info();
58
59  protected:
60   typedef std::vector<UI_32> DynamicOrderedVector;
61   typedef DynamicOrderedVector::iterator DynamicOrderedIter;
62   DynamicOrderedVector  m_vOrderedGroup;
63   DynamicOrderedIter    m_iterOrderedGroup;
64 };
65
66 class DynamicModuleStart;
67
68 class DynamicLauncher: public  DynamicLaunchBase {
69  public:
70   DynamicLauncher();
71   virtual ~DynamicLauncher();
72   BOOL  dynamic_launch_enabled() const;
73   VOID  configure_dynamic_launch(const SS_SOURCE & source_type,  // NOLINT
74                                  GroupLaunchMap & group_info, LaunchOrderedVector & order_info);  // NOLINT
75   VOID  copyDynOrderedVector(DynamicModuleStart &);
76
77  private:
78   // Disable class copy constructors
79   explicit DynamicLauncher(const DynamicLauncher& f_source)
80     : m_nLaunchGroupId(f_source.m_nLaunchGroupId)
81     , m_nLaunchBeforeGroupId(f_source.m_nLaunchBeforeGroupId)
82     , m_nLaunchAfterGroupId(f_source.m_nLaunchAfterGroupId)
83     , m_nAviageTriggerId(f_source.m_nAviageTriggerId)
84     , m_bDynamicLaunchEnabled(f_source.m_bDynamicLaunchEnabled)
85     , m_eSourceType(f_source.m_eSourceType) {}
86   DynamicLauncher & operator = (const DynamicLauncher &);
87
88   // helper methods..
89   DynamicLaunchInfo* get_dynamic_source_info(const SS_SOURCE& source_type,  // NOLINT
90                                               BOOL& source_trigger, BOOL &is_aviage_required);  // NOLINT
91   UI_32 get_id_using_group_name(PCSTR group_name, GroupLaunchMap& group_info);  // NOLINT
92   VOID create_normal_launch_vector(GroupLaunchMap& group_info, LaunchOrderedVector& order_info);  // NOLINT
93   BOOL is_inGroupLaunchMap(UI_32& id, GroupLaunchMap& group_info);  // NOLINT
94
95   // Data Members
96   UI_32 m_nLaunchGroupId;
97   UI_32 m_nLaunchBeforeGroupId;
98   UI_32 m_nLaunchAfterGroupId;
99   UI_32 m_nAviageTriggerId;
100   BOOL  m_bDynamicLaunchEnabled;
101   SS_SOURCE m_eSourceType;
102 };
103
104 class DynamicModuleStart: public DynamicLaunchBase {
105  public:
106   DynamicModuleStart();
107   virtual ~DynamicModuleStart();
108   VOID setGroupVector(DynamicOrderedVector&);
109 };
110
111 #endif  // SS_SM_DYNAMIC_LAUNCHER_H_  // NOLINT