2 * @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 ///////////////////////////////////////////////////////////////////////////////
18 /// \ingroup tag_SystemManager
19 /// \brief This file provides support for System Manager process launching.
21 ///////////////////////////////////////////////////////////////////////////////
23 #ifndef SS_SM_DYNAMIC_LAUNCHER_H_ // NOLINT
24 #define SS_SM_DYNAMIC_LAUNCHER_H_
26 #include <native_service/frameworkunified_types.h>
27 #include <system_service/interfaceunified_system_types.h>
30 #include "ss_sm_config.h"
35 typedef struct _tDynamicLaunchParams {
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;
46 class DynamicLaunchBase {
49 virtual ~DynamicLaunchBase();
60 typedef std::vector<UI_32> DynamicOrderedVector;
61 typedef DynamicOrderedVector::iterator DynamicOrderedIter;
62 DynamicOrderedVector m_vOrderedGroup;
63 DynamicOrderedIter m_iterOrderedGroup;
66 class DynamicModuleStart;
68 class DynamicLauncher: public DynamicLaunchBase {
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 &);
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 &);
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
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;
104 class DynamicModuleStart: public DynamicLaunchBase {
106 DynamicModuleStart();
107 virtual ~DynamicModuleStart();
108 VOID setGroupVector(DynamicOrderedVector&);
111 #endif // SS_SM_DYNAMIC_LAUNCHER_H_ // NOLINT