plugin_router_factory.h
Go to the documentation of this file.
1 //
2 // Created by nakakura on 22/09/02.
3 //
4 
5 #ifndef SKYWAY_PLUGIN_FACTORY_H
6 #define SKYWAY_PLUGIN_FACTORY_H
7 
8 #include <fruit/fruit.h>
9 
10 #include "binary_plugin_router.h"
11 #include "json_plugin_router.h"
12 #include "string_plugin_router.h"
13 
14 using fruit::Annotated;
15 using fruit::Component;
16 using fruit::createComponent;
17 using fruit::Injector;
18 
20  private:
21  public:
22  virtual ~IPluginRouterFactory() = default;
23  virtual std::unique_ptr<PluginRouter> Create(
24  std::string target_ip, uint16_t target_port, std::string plugin_type,
25  std::shared_ptr<rapidjson::Document> config) = 0;
26 };
27 
29  private:
33 
34  public:
35  PluginRouterFactoryImpl() = delete;
37  ANNOTATED(BinaryAnnotation, PluginRouterFactory) binary_factory,
38  ANNOTATED(JsonAnnotation, PluginRouterFactory) json_factory,
39  ANNOTATED(StringAnnotation, PluginRouterFactory) string_factory))
40  : binary_factory_(binary_factory),
41  json_factory_(json_factory),
42  string_factory_(string_factory) {}
44 
45  virtual std::unique_ptr<PluginRouter> Create(
46  std::string target_ip, uint16_t target_port, std::string plugin_type,
47  std::shared_ptr<rapidjson::Document> config) override;
48 };
49 
50 Component<IPluginRouterFactory> getPluginFactoryComponent();
51 
52 #endif // SKYWAY_PLUGIN_FACTORY_H
string_plugin_router.h
PluginRouterFactoryImpl::binary_factory_
PluginRouterFactory binary_factory_
Definition: plugin_router_factory.h:30
json_plugin_router.h
PluginRouterFactoryImpl::~PluginRouterFactoryImpl
~PluginRouterFactoryImpl()
Definition: plugin_router_factory.h:43
getPluginFactoryComponent
Component< IPluginRouterFactory > getPluginFactoryComponent()
Definition: plugin_router_factory.cpp:22
PluginRouterFactoryImpl::INJECT
INJECT(PluginRouterFactoryImpl(ANNOTATED(BinaryAnnotation, PluginRouterFactory) binary_factory, ANNOTATED(JsonAnnotation, PluginRouterFactory) json_factory, ANNOTATED(StringAnnotation, PluginRouterFactory) string_factory))
Definition: plugin_router_factory.h:36
BinaryAnnotation
Definition: binary_plugin_router.h:44
StringAnnotation
Definition: string_plugin_router.h:43
IPluginRouterFactory::~IPluginRouterFactory
virtual ~IPluginRouterFactory()=default
PluginRouterFactoryImpl
Definition: plugin_router_factory.h:28
PluginRouterFactory
std::function< std::unique_ptr< PluginRouter >(std::shared_ptr< rapidjson::Document >, udp::endpoint)> PluginRouterFactory
Definition: plugin_router.h:29
PluginRouterFactoryImpl::json_factory_
PluginRouterFactory json_factory_
Definition: plugin_router_factory.h:31
IPluginRouterFactory
Definition: plugin_router_factory.h:19
PluginRouterFactoryImpl::PluginRouterFactoryImpl
PluginRouterFactoryImpl()=delete
binary_plugin_router.h
PluginRouterFactoryImpl::string_factory_
PluginRouterFactory string_factory_
Definition: plugin_router_factory.h:32
IPluginRouterFactory::Create
virtual std::unique_ptr< PluginRouter > Create(std::string target_ip, uint16_t target_port, std::string plugin_type, std::shared_ptr< rapidjson::Document > config)=0
JsonAnnotation
Definition: json_plugin_router.h:48
PluginRouterFactoryImpl::Create
virtual std::unique_ptr< PluginRouter > Create(std::string target_ip, uint16_t target_port, std::string plugin_type, std::shared_ptr< rapidjson::Document > config) override
Definition: plugin_router_factory.cpp:7


skyway
Author(s): Toshiya Nakakura
autogenerated on Thu Oct 26 2023 02:42:21