summaryrefslogtreecommitdiffstats
path: root/systemservice/system_manager/server/include/ss_sm_dynamic_launcher.h
diff options
context:
space:
mode:
Diffstat (limited to 'systemservice/system_manager/server/include/ss_sm_dynamic_launcher.h')
-rw-r--r--systemservice/system_manager/server/include/ss_sm_dynamic_launcher.h111
1 files changed, 111 insertions, 0 deletions
diff --git a/systemservice/system_manager/server/include/ss_sm_dynamic_launcher.h b/systemservice/system_manager/server/include/ss_sm_dynamic_launcher.h
new file mode 100644
index 00000000..a6efb1fd
--- /dev/null
+++ b/systemservice/system_manager/server/include/ss_sm_dynamic_launcher.h
@@ -0,0 +1,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