File tree 6 files changed +83
-13
lines changed
6 files changed +83
-13
lines changed Original file line number Diff line number Diff line change 6
6
#define DLMS_DLMS_BASH_H
7
7
#include < iostream>
8
8
9
- class IPlugin ;
9
+ class Plugin ;
10
10
class IDlms {
11
11
public:
12
12
virtual ~IDlms () = default ;
@@ -37,14 +37,14 @@ class IDlms {
37
37
*
38
38
* @return 0:成功,其他:失败
39
39
*/
40
- virtual int32_t Exit () = 0;
40
+ virtual int32_t Reset () = 0;
41
41
42
42
/* *
43
43
* @brief 获取插件对象
44
44
*
45
45
* @return nullptr:失败,其他:成功
46
46
*/
47
- virtual IPlugin * GetPluginByName (std::string &pluginName) = 0;
47
+ virtual Plugin * GetPlugin (std::string &pluginName) = 0;
48
48
};
49
49
50
50
Original file line number Diff line number Diff line change 5
5
#ifndef DLMS_PLUGIN_H
6
6
#define DLMS_PLUGIN_H
7
7
#include < iostream>
8
+ #include < memory>
9
+
8
10
#include " dlms_bash.h"
9
11
10
12
/*
11
13
* 实际项目中随时可以替换成动态库插件形式,这里为demo代码采用直接链接编译的方式使用
12
14
* */
13
15
16
+ enum PluginType
17
+ {
18
+ // / \brief A World plugin
19
+ WORLD_PLUGIN,
20
+ // / \brief A Model plugin
21
+ MODEL_PLUGIN,
22
+ // / \brief A Sensor plugin
23
+ SENSOR_PLUGIN,
24
+ // / \brief A System plugin
25
+ SYSTEM_PLUGIN,
26
+ // / \brief A Visual plugin
27
+ VISUAL_PLUGIN,
28
+ // / \brief A GUI plugin
29
+ GUI_PLUGIN
30
+ };
31
+
14
32
15
- class IPlugin {
33
+ class Plugin {
16
34
public:
17
35
enum PluginStatus : uint8_t {
18
36
PLUGIN_UNKNOWN = 0 ,
19
37
PLUGIN_INIT = 1 ,
20
38
PLUGIN_RUNNING = 2 ,
21
39
PLUGIN_STOP = 3 ,
22
- PLUGIN_EXIT = 4 ,
40
+ PLUGIN_Reset = 4 ,
23
41
};
42
+ //
24
43
25
44
public:
26
- virtual ~IPlugin () = default ;
45
+ virtual ~Plugin () = default ;
27
46
28
47
/* *
29
48
* @brief 插件初始化
@@ -36,13 +55,17 @@ class IPlugin {
36
55
37
56
virtual int32_t Stop () = 0;
38
57
39
- virtual int32_t Exit () = 0;
58
+ virtual int32_t Reset () = 0;
40
59
60
+ // 获取插件名字
61
+ virtual std::string GetHandleName () = 0;
41
62
42
63
43
64
44
65
protected:
45
66
volatile PluginStatus m_pluginStatus{PLUGIN_UNKNOWN};
67
+ PluginType type;
68
+ std::string handleName; // name of the plugin
46
69
};
47
70
48
71
Original file line number Diff line number Diff line change @@ -45,11 +45,11 @@ int32_t CDlms::Stop() {
45
45
return 0 ;
46
46
}
47
47
48
- int32_t CDlms::Exit () {
48
+ int32_t CDlms::Reset () {
49
49
return 0 ;
50
50
}
51
51
52
- IPlugin *CDlms::GetPluginByName (std::string &pluginName) {
52
+ Plugin *CDlms::GetPlugin (std::string &pluginName) {
53
53
54
54
auto iter = m_mapPlugin.find (pluginName);
55
55
if (iter == m_mapPlugin.end ()) {
Original file line number Diff line number Diff line change 9
9
10
10
#include " plugin.h"
11
11
#include < dlms_bash.h>
12
+ #include " plugin_manager.h"
12
13
13
14
class CDlms : public IDlms {
14
15
public:
@@ -20,15 +21,14 @@ class CDlms : public IDlms {
20
21
21
22
int32_t Stop () override ;
22
23
23
- int32_t Exit () override ;
24
-
25
- IPlugin* GetPluginByName (std::string& pluginName) override ;
24
+ int32_t Reset () override ;
26
25
26
+ Plugin* GetPlugin (std::string& pluginName) override ;
27
27
28
28
29
29
30
30
private:
31
- std::map<std::string, IPlugin*> m_mapPlugin ;
31
+ PluginManager pluginManager ;
32
32
33
33
};
34
34
Original file line number Diff line number Diff line change
1
+ //
2
+ // Created by andrew on 2022/6/10.
3
+ //
4
+
5
+ #include " plugin_manager.h"
6
+
7
+ int32_t PluginManager::LoadPlugin (const std::string &path, const std::string &pluginName) {
8
+ return 0 ;
9
+ }
10
+
11
+ int32_t PluginManager::LoadPlugin (const std::string &path) {
12
+ return 0 ;
13
+ }
14
+
15
+ Plugin *PluginManager::GetPlugin (const std::string &pluginName) {
16
+ return nullptr ;
17
+ }
Original file line number Diff line number Diff line change
1
+ //
2
+ // Created by andrew on 2022/6/10.
3
+ //
4
+
5
+ #ifndef DLMS_PLUGIN_MANAGER_H
6
+ #define DLMS_PLUGIN_MANAGER_H
7
+ #include < map>
8
+ #include < string>
9
+
10
+
11
+ #include " plugin.h"
12
+
13
+
14
+ class PluginManager {
15
+ public:
16
+ int32_t LoadPlugin (const std::string& path, const std::string& pluginName);
17
+
18
+ int32_t LoadPlugin (const std::string& path);
19
+
20
+ Plugin *GetPlugin (const std::string& pluginName);
21
+
22
+
23
+
24
+ private:
25
+ std::map<std::string, Plugin*> mapPlugins;
26
+
27
+ };
28
+
29
+
30
+ #endif // DLMS_PLUGIN_MANAGER_H
You can’t perform that action at this time.
0 commit comments