5 #ifndef SKYWAY_PLUGIN_FACTORY_H 6 #define SKYWAY_PLUGIN_FACTORY_H 8 #include <fruit/fruit.h> 14 using fruit::Annotated;
15 using fruit::Component;
16 using fruit::createComponent;
17 using fruit::Injector;
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;
40 : binary_factory_(binary_factory),
41 json_factory_(json_factory),
42 string_factory_(string_factory) {}
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;
52 #endif // SKYWAY_PLUGIN_FACTORY_H Component< IPluginRouterFactory > getPluginFactoryComponent()
PluginRouterFactory binary_factory_
~PluginRouterFactoryImpl()
INJECT(PluginRouterFactoryImpl(ANNOTATED(BinaryAnnotation, PluginRouterFactory) binary_factory, ANNOTATED(JsonAnnotation, PluginRouterFactory) json_factory, ANNOTATED(StringAnnotation, PluginRouterFactory) string_factory))
PluginRouterFactory json_factory_
virtual ~IPluginRouterFactory()=default
PluginRouterFactory string_factory_
std::function< std::unique_ptr< PluginRouter >(std::shared_ptr< rapidjson::Document >, udp::endpoint)> PluginRouterFactory
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