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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
/*
* @copyright Copyright (c) 2016-2020 TOYOTA MOTOR CORPORATION.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
///////////////////////////////////////////////////////////////////////////////
/// \ingroup tag_SystemManager
/// \brief This file provides support for System Manager process launching.
///
///////////////////////////////////////////////////////////////////////////////
#ifndef SS_SM_DYNAMIC_LAUNCHER_H_ // NOLINT
#define SS_SM_DYNAMIC_LAUNCHER_H_
#include <native_service/frameworkunified_types.h>
#include <system_service/interfaceunified_system_types.h>
#include <vector>
#include "ss_sm_config.h"
using std::vector;
typedef struct _tDynamicLaunchParams {
SS_SOURCE source;
const PCHAR source_name;
const PCHAR before_group_name;
const PCHAR start_group_name;
const PCHAR after_group_name;
const PCHAR aviage_trigger_name;
BOOL group_trigger;
} DynamicLaunchInfo;
class DynamicLaunchBase {
public:
DynamicLaunchBase();
virtual ~DynamicLaunchBase();
UI_32 get_id() const;
UI_32 advance_id();
UI_32 decrement_id();
BOOL is_begin();
BOOL is_end();
VOID to_begin();
VOID to_end();
VOID print_info();
protected:
typedef std::vector<UI_32> DynamicOrderedVector;
typedef DynamicOrderedVector::iterator DynamicOrderedIter;
DynamicOrderedVector m_vOrderedGroup;
DynamicOrderedIter m_iterOrderedGroup;
};
class DynamicModuleStart;
class DynamicLauncher: public DynamicLaunchBase {
public:
DynamicLauncher();
virtual ~DynamicLauncher();
BOOL dynamic_launch_enabled() const;
VOID configure_dynamic_launch(const SS_SOURCE & source_type, // NOLINT
GroupLaunchMap & group_info, LaunchOrderedVector & order_info); // NOLINT
VOID copyDynOrderedVector(DynamicModuleStart &);
private:
// Disable class copy constructors
explicit DynamicLauncher(const DynamicLauncher& f_source)
: m_nLaunchGroupId(f_source.m_nLaunchGroupId)
, m_nLaunchBeforeGroupId(f_source.m_nLaunchBeforeGroupId)
, m_nLaunchAfterGroupId(f_source.m_nLaunchAfterGroupId)
, m_nAviageTriggerId(f_source.m_nAviageTriggerId)
, m_bDynamicLaunchEnabled(f_source.m_bDynamicLaunchEnabled)
, m_eSourceType(f_source.m_eSourceType) {}
DynamicLauncher & operator = (const DynamicLauncher &);
// helper methods..
DynamicLaunchInfo* get_dynamic_source_info(const SS_SOURCE& source_type, // NOLINT
BOOL& source_trigger, BOOL &is_aviage_required); // NOLINT
UI_32 get_id_using_group_name(PCSTR group_name, GroupLaunchMap& group_info); // NOLINT
VOID create_normal_launch_vector(GroupLaunchMap& group_info, LaunchOrderedVector& order_info); // NOLINT
BOOL is_inGroupLaunchMap(UI_32& id, GroupLaunchMap& group_info); // NOLINT
// Data Members
UI_32 m_nLaunchGroupId;
UI_32 m_nLaunchBeforeGroupId;
UI_32 m_nLaunchAfterGroupId;
UI_32 m_nAviageTriggerId;
BOOL m_bDynamicLaunchEnabled;
SS_SOURCE m_eSourceType;
};
class DynamicModuleStart: public DynamicLaunchBase {
public:
DynamicModuleStart();
virtual ~DynamicModuleStart();
VOID setGroupVector(DynamicOrderedVector&);
};
#endif // SS_SM_DYNAMIC_LAUNCHER_H_ // NOLINT
|