TARAXA
Loading...
Searching...
No Matches
plugin.hpp
Go to the documentation of this file.
1#pragma once
2#include <boost/program_options.hpp>
3#include <memory>
4
5#include "common/app_base.hpp"
6
7namespace taraxa {
8
9class Plugin {
10 public:
11 explicit Plugin(std::shared_ptr<AppBase>& a) : _app(a) {}
12 virtual ~Plugin() = default;
13
14 std::shared_ptr<AppBase> app() const { return _app.lock(); }
15
16 virtual std::string name() const = 0;
17
18 virtual std::string description() const = 0;
19
20 virtual void start() = 0;
21
22 virtual void shutdown() = 0;
23
24 virtual void init(const boost::program_options::variables_map& options) = 0;
25
26 virtual void addOptions(boost::program_options::options_description& command_line_options) = 0;
27
28 protected:
29 std::weak_ptr<AppBase> _app;
30};
31
32} // namespace taraxa
Definition plugin.hpp:9
std::weak_ptr< AppBase > _app
Definition plugin.hpp:29
Plugin(std::shared_ptr< AppBase > &a)
Definition plugin.hpp:11
virtual void init(const boost::program_options::variables_map &options)=0
virtual ~Plugin()=default
virtual void addOptions(boost::program_options::options_description &command_line_options)=0
virtual std::string description() const =0
virtual std::string name() const =0
virtual void start()=0
virtual void shutdown()=0
std::shared_ptr< AppBase > app() const
Definition plugin.hpp:14
Definition app.hpp:16