Fledge
An open source edge computing platform for industrial users
filter_plugin.h
1 #ifndef _FILTER_PLUGIN_H
2 #define _FILTER_PLUGIN_H
3 /*
4  * Fledge filter plugin class.
5  *
6  * Copyright (c) 2018 Dianomic Systems
7  *
8  * Released under the Apache 2.0 Licence
9  *
10  * Author: Massimiliano Pinto
11  */
12 #include <plugin.h>
13 #include <plugin_manager.h>
14 #include <config_category.h>
15 #include <management_client.h>
16 #include <plugin_data.h>
17 #include <reading_set.h>
18 
19 // This is a C++ ReadingSet class instance passed through
20 typedef ReadingSet READINGSET;
21 // Data handle passed to function pointer
22 typedef void OUTPUT_HANDLE;
23 // Function pointer called by "plugin_ingest" plugin method
24 typedef void (*OUTPUT_STREAM)(OUTPUT_HANDLE *, READINGSET *);
25 
26 // FilterPlugin class
27 class FilterPlugin : public Plugin
28 {
29 
30 public:
31  FilterPlugin(const std::string& name,
32  PLUGIN_HANDLE handle);
33  ~FilterPlugin();
34 
35  const std::string getName() const { return m_name; };
36  PLUGIN_HANDLE init(const ConfigCategory& config,
37  OUTPUT_HANDLE* outHandle,
38  OUTPUT_STREAM outputFunc);
39  void shutdown();
40  void ingest(READINGSET *);
41  bool persistData() { return info->options & SP_PERSIST_DATA; };
42  void startData(const std::string& pluginData);
43  std::string shutdownSaveData();
44  void start();
45  void reconfigure(const std::string&);
46 
47 private:
48  PLUGIN_HANDLE (*pluginInit)(const ConfigCategory* config,
49  OUTPUT_HANDLE* outHandle,
50  OUTPUT_STREAM output);
51  void (*pluginShutdownPtr)(PLUGIN_HANDLE);
52  void (*pluginReconfigurePtr)(PLUGIN_HANDLE, const std::string&);
53  void (*pluginIngestPtr)(PLUGIN_HANDLE,
54  READINGSET *);
55  std::string (*pluginShutdownDataPtr)(const PLUGIN_HANDLE);
56  void (*pluginStartDataPtr)(PLUGIN_HANDLE,
57  const std::string& pluginData);
58  void (*pluginStartPtr)(PLUGIN_HANDLE);
59 
60 public:
61  // Persist plugin data
62  PluginData* m_plugin_data;
63 
64 private:
65  std::string m_name;
66  PLUGIN_HANDLE m_instance;
67 };
68 
69 #endif
void startData(const std::string &pluginData)
Call plugin_start passing plugin data.
Definition: filter_plugin.cpp:152
unsigned int options
The set of option flags that apply to this plugin.
Definition: plugin_api.h:29
void start()
Call plugin_start.
Definition: filter_plugin.cpp:126
PLUGIN_HANDLE init(const ConfigCategory &config, OUTPUT_HANDLE *outHandle, OUTPUT_STREAM outputFunc)
Call the loaded plugin "plugin_init" method.
Definition: filter_plugin.cpp:82
Definition: config_category.h:56
Definition: filter_plugin.h:27
void shutdown()
Call the loaded plugin "plugin_shutdown" method.
Definition: filter_plugin.cpp:95
void ingest(READINGSET *)
Call the loaded plugin "plugin_ingest" method.
Definition: filter_plugin.cpp:168
A generic representation of a plugin.
Definition: plugin.h:20
Reading set class.
Definition: reading_set.h:26
~FilterPlugin()
FilterPlugin destructor.
Definition: filter_plugin.cpp:67
Definition: plugin_data.h:15
std::string shutdownSaveData()
Call the loaded plugin "plugin_shutdown" method returning plugind data (as string) ...
Definition: filter_plugin.cpp:111
FilterPlugin(const std::string &name, PLUGIN_HANDLE handle)
FilterPlugin class constructor.
Definition: filter_plugin.cpp:32
void reconfigure(const std::string &)
Call plugin_reconfigure method.
Definition: filter_plugin.cpp:139