summaryrefslogtreecommitdiff
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/application_manager/include/application_manager/application_manager_impl.h2
-rw-r--r--src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin.h1
-rw-r--r--src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager.h5
-rw-r--r--src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager_impl.h5
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/CMakeLists.txt13
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h1
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_rpc_plugin.cc9
-rw-r--r--src/components/application_manager/rpc_plugins/app_service_rpc_plugin/test/CMakeLists.txt12
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/CMakeLists.txt12
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_rpc_plugin.h1
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc9
-rw-r--r--src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/CMakeLists.txt11
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/CMakeLists.txt14
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/sdl_rpc_plugin.h2
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/sdl_rpc_plugin.cc9
-rw-r--r--src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/CMakeLists.txt9
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/CMakeLists.txt11
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/include/vehicle_info_plugin/vehicle_info_plugin.h2
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_plugin.cc9
-rw-r--r--src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/CMakeLists.txt10
-rw-r--r--src/components/application_manager/src/plugin_manager/rpc_plugin_manager_impl.cc50
-rwxr-xr-xsrc/components/application_manager/test/CMakeLists.txt2
-rw-r--r--src/components/application_manager/test/commands/CMakeLists.txt2
-rwxr-xr-xsrc/components/application_manager/test/message_helper/CMakeLists.txt2
-rw-r--r--src/components/media_manager/test/CMakeLists.txt2
-rw-r--r--src/components/policy/policy_external/CMakeLists.txt19
-rw-r--r--src/components/policy/policy_external/src/policy_manager_impl.cc6
-rw-r--r--src/components/policy/policy_external/test/CMakeLists.txt2
-rw-r--r--src/components/policy/policy_regular/CMakeLists.txt9
-rw-r--r--src/components/policy/policy_regular/src/policy_manager_impl.cc6
-rw-r--r--src/components/policy/policy_regular/test/CMakeLists.txt2
-rw-r--r--src/components/telemetry_monitor/CMakeLists.txt2
-rw-r--r--src/components/transport_manager/src/usb/libusb/usb_handler.cc12
-rw-r--r--src/components/utils/CMakeLists.txt5
-rw-r--r--src/components/utils/src/push_log.cc18
-rw-r--r--src/components/utils/test/CMakeLists.txt2
36 files changed, 181 insertions, 107 deletions
diff --git a/src/components/application_manager/include/application_manager/application_manager_impl.h b/src/components/application_manager/include/application_manager/application_manager_impl.h
index add099f975..936497cd15 100644
--- a/src/components/application_manager/include/application_manager/application_manager_impl.h
+++ b/src/components/application_manager/include/application_manager/application_manager_impl.h
@@ -1428,8 +1428,8 @@ class ApplicationManagerImpl
connection_handler::ConnectionHandler* connection_handler_;
std::unique_ptr<policy::PolicyHandlerInterface> policy_handler_;
protocol_handler::ProtocolHandler* protocol_handler_;
- request_controller::RequestController request_ctrl_;
std::unique_ptr<plugin_manager::RPCPluginManager> plugin_manager_;
+ request_controller::RequestController request_ctrl_;
std::unique_ptr<application_manager::AppServiceManager> app_service_manager_;
/**
diff --git a/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin.h b/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin.h
index aea0361f19..c3b0d67d67 100644
--- a/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin.h
+++ b/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin.h
@@ -117,7 +117,6 @@ class RPCPlugin {
ApplicationEvent event,
application_manager::ApplicationSharedPtr application) = 0;
};
-typedef std::unique_ptr<RPCPlugin> RPCPluginPtr;
} // namespace plugin_manager
} // namespace application_manager
diff --git a/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager.h b/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager.h
index b658e40b1c..abf5494ecb 100644
--- a/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager.h
+++ b/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager.h
@@ -44,6 +44,10 @@ namespace application_manager {
namespace plugin_manager {
class RPCPluginManager {
+ protected:
+ typedef std::unique_ptr<RPCPlugin, std::function<void(RPCPlugin*)> >
+ RPCPluginPtr;
+
public:
virtual ~RPCPluginManager() {}
/**
@@ -59,6 +63,7 @@ class RPCPluginManager {
* @brief GetPlugins get list of plugins
* @return list of loaded plugins
*/
+ DEPRECATED
virtual std::vector<RPCPluginPtr>& GetPlugins() = 0;
/**
diff --git a/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager_impl.h b/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager_impl.h
index 885181e9c4..368817c89c 100644
--- a/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager_impl.h
+++ b/src/components/application_manager/include/application_manager/plugin_manager/rpc_plugin_manager_impl.h
@@ -58,12 +58,17 @@ class RPCPluginManagerImpl : public RPCPluginManager {
policy::PolicyHandlerInterface& policy_handler);
uint32_t LoadPlugins(const std::string& plugins_path) OVERRIDE;
+
+ DEPRECATED
std::vector<RPCPluginPtr>& GetPlugins() OVERRIDE;
+
utils::Optional<RPCPlugin> FindPluginToProcess(
const int32_t function_id,
const commands::Command::CommandSource message_source) OVERRIDE;
private:
+ RPCPluginPtr LoadPlugin(const std::string& full_plugin_path) const;
+
std::vector<RPCPluginPtr> loaded_plugins_;
ApplicationManager& app_manager_;
rpc_service::RPCService& rpc_service_;
diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/CMakeLists.txt b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/CMakeLists.txt
index 1e23aac8ee..ef215cdd5a 100644
--- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/CMakeLists.txt
@@ -53,22 +53,25 @@ collect_sources(COMMANDS_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/commands")
set(LIBRARIES
HMI_API
MOBILE_API
+ MessageHelper
ApplicationManager
+ Resumption
v4_protocol_v1_2_no_extra
SmartObjects
Utils
- sdl_rpc_plugin
+ sdl_rpc_plugin_static
)
if(ENABLE_LOG)
list(APPEND LIBRARIES log4cxx -L${LOG4CXX_LIBS_DIRECTORY})
endif()
-add_library("app_service_rpc_plugin" SHARED ${PLUGIN_SOURCES} ${MOBILE_COMMANDS} ${HMI_COMMANDS} ${COMMANDS_SOURCES})
-target_link_libraries("app_service_rpc_plugin" ${LIBRARIES})
+add_library("app_service_rpc_plugin_static" ${PLUGIN_SOURCES} ${MOBILE_COMMANDS} ${HMI_COMMANDS})
+target_link_libraries("app_service_rpc_plugin_static" ${LIBRARIES})
+
+add_library("app_service_rpc_plugin" SHARED "src/app_service_rpc_plugin.cc")
+target_link_libraries("app_service_rpc_plugin" app_service_rpc_plugin_static)
-add_library("AppServiceRpcPluginStaticLib" ${PLUGIN_SOURCES} ${MOBILE_COMMANDS} ${HMI_COMMANDS})
-target_link_libraries("AppServiceRpcPluginStaticLib" ${LIBRARIES})
set(INSTALL_DESTINATION bin)
diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h
index c9cb98cdfb..1120f68327 100644
--- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h
+++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/include/app_service_rpc_plugin/app_service_rpc_plugin.h
@@ -69,5 +69,6 @@ class AppServiceRpcPlugin : public plugins::RPCPlugin {
} // namespace app_service_rpc_plugin
extern "C" application_manager::plugin_manager::RPCPlugin* Create();
+extern "C" void Delete(application_manager::plugin_manager::RPCPlugin* data);
#endif // SRC_COMPONENTS_APPLICATION_MANAGER_RPC_PLUGINS_APP_SERVICE_PLUGIN_INCLUDE_APP_SERVICE_PLUGIN_APP_SERVICE_PLUGIN_H
diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_rpc_plugin.cc b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_rpc_plugin.cc
index 3b1b0715d4..7195ce234f 100644
--- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_rpc_plugin.cc
+++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/src/app_service_rpc_plugin.cc
@@ -93,6 +93,13 @@ void AppServiceRpcPlugin::DeleteSubscriptions(
} // namespace app_service_rpc_plugin
-extern "C" application_manager::plugin_manager::RPCPlugin* Create() {
+extern "C" __attribute__((visibility("default")))
+application_manager::plugin_manager::RPCPlugin*
+Create() {
return new app_service_rpc_plugin::AppServiceRpcPlugin();
}
+
+extern "C" __attribute__((visibility("default"))) void Delete(
+ application_manager::plugin_manager::RPCPlugin* data) {
+ delete data;
+} \ No newline at end of file
diff --git a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/test/CMakeLists.txt b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/test/CMakeLists.txt
index 0b56ddb7e9..0b69c01606 100644
--- a/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/test/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/app_service_rpc_plugin/test/CMakeLists.txt
@@ -25,16 +25,8 @@ file(GLOB SOURCES
set(LIBRARIES
gmock
- Utils
- SmartObjects
- HMI_API
- MOBILE_API
- connectionHandler
- app_service_rpc_plugin
- sdl_rpc_plugin
- jsoncpp
- Policy
- Resumption
+ sdl_rpc_plugin_static
+ app_service_rpc_plugin_static
)
create_cotired_test("app_services_commands_test" "${SOURCES}" "${LIBRARIES}" )
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/CMakeLists.txt b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/CMakeLists.txt
index 00de927b6e..8129e1240d 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/CMakeLists.txt
@@ -50,7 +50,10 @@ collect_sources(COMMANDS_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/commands")
set(LIBRARIES
HMI_API
MOBILE_API
+ MessageHelper
ApplicationManager
+ ProtocolHandler
+ connectionHandler
v4_protocol_v1_2_no_extra
SmartObjects
Utils
@@ -60,11 +63,12 @@ if(ENABLE_LOG)
list(APPEND LIBRARIES log4cxx -L${LOG4CXX_LIBS_DIRECTORY})
endif()
-add_library("rc_rpc_plugin" SHARED ${PLUGIN_SOURCES} ${MOBILE_COMMANDS} ${HMI_COMMANDS} ${COMMANDS_SOURCES})
-target_link_libraries("rc_rpc_plugin" ${LIBRARIES})
+add_library("rc_rpc_plugin_static" ${PLUGIN_SOURCES} ${MOBILE_COMMANDS} ${HMI_COMMANDS})
+target_link_libraries("rc_rpc_plugin_static" ${LIBRARIES})
+
+add_library("rc_rpc_plugin" SHARED "src/rc_rpc_plugin.cc")
+target_link_libraries("rc_rpc_plugin" rc_rpc_plugin_static)
-add_library("RCRpcPluginStaticLib" ${PLUGIN_SOURCES} ${MOBILE_COMMANDS} ${HMI_COMMANDS})
-target_link_libraries("RCRpcPluginStaticLib" ${LIBRARIES})
set(INSTALL_DESTINATION bin)
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_rpc_plugin.h b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_rpc_plugin.h
index 303b31f857..cd15674889 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_rpc_plugin.h
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/include/rc_rpc_plugin/rc_rpc_plugin.h
@@ -109,5 +109,6 @@ class RCRPCPlugin : public plugins::RPCPlugin {
} // namespace rc_rpc_plugin
extern "C" application_manager::plugin_manager::RPCPlugin* Create();
+extern "C" void Delete(application_manager::plugin_manager::RPCPlugin* data);
#endif // SRC_COMPONENTS_APPLICATION_MANAGER_RPC_PLUGINS_RC_RPC_PLUGIN_INCLUDE_RC_RPC_PLUGIN_RC_RPC_PLUGIN_H_
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc
index 026e03eeff..0c4a5a4e53 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/src/rc_rpc_plugin.cc
@@ -136,6 +136,13 @@ RCRPCPlugin::Apps RCRPCPlugin::GetRCApplications(
} // namespace rc_rpc_plugin
-extern "C" application_manager::plugin_manager::RPCPlugin* Create() {
+extern "C" __attribute__((visibility("default")))
+application_manager::plugin_manager::RPCPlugin*
+Create() {
return new rc_rpc_plugin::RCRPCPlugin();
} // namespace rc_rpc_plugin
+
+extern "C" __attribute__((visibility("default"))) void Delete(
+ application_manager::plugin_manager::RPCPlugin* data) {
+ delete data;
+}
diff --git a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/CMakeLists.txt b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/CMakeLists.txt
index c1c59d7e78..c5a191650e 100644
--- a/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/rc_rpc_plugin/test/CMakeLists.txt
@@ -52,17 +52,8 @@ file(GLOB SOURCES
)
set(LIBRARIES
- RCRpcPluginStaticLib
- ApplicationManager
- connectionHandler
- SmartObjects
- ProtocolHandler
- MessageHelper
- connectionHandler
- Utils
- jsoncpp
+ rc_rpc_plugin_static
gmock_main
- dl
)
if(ENABLE_LOG)
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/CMakeLists.txt b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/CMakeLists.txt
index fdf02b57cb..fe8857b6b1 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/CMakeLists.txt
@@ -51,21 +51,27 @@ collect_sources(APP_EXTENSIONS "${EXTENSIONS_SOURCE_DIR}")
collect_sources(RPC_PLUGIN_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(LIBRARIES
+ ApplicationManager
HMI_API
MOBILE_API
- ApplicationManager
+ MessageHelper
+ connectionHandler
v4_protocol_v1_2_no_extra
SmartObjects
Utils
- Policy
+ PolicyStatic
+ jsoncpp
)
if(ENABLE_LOG)
list(APPEND LIBRARIES log4cxx -L${LOG4CXX_LIBS_DIRECTORY})
endif()
-add_library("sdl_rpc_plugin" SHARED ${MOBILE_COMMANDS} ${HMI_COMMANDS} ${RPC_PLUGIN_SOURCES} ${APP_EXTENSIONS})
-target_link_libraries("sdl_rpc_plugin" ${LIBRARIES})
+add_library("sdl_rpc_plugin_static" ${MOBILE_COMMANDS} ${HMI_COMMANDS} ${RPC_PLUGIN_SOURCES} ${APP_EXTENSIONS})
+target_link_libraries("sdl_rpc_plugin_static" ${LIBRARIES})
+
+add_library("sdl_rpc_plugin" SHARED "src/sdl_rpc_plugin.cc")
+target_link_libraries("sdl_rpc_plugin" sdl_rpc_plugin_static)
set(INSTALL_DESTINATION bin)
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/sdl_rpc_plugin.h b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/sdl_rpc_plugin.h
index 7d482709cb..288410e342 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/sdl_rpc_plugin.h
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/include/sdl_rpc_plugin/sdl_rpc_plugin.h
@@ -67,5 +67,5 @@ class SDLRPCPlugin : public plugins::RPCPlugin {
} // namespace sdl_rpc_plugin
extern "C" application_manager::plugin_manager::RPCPlugin* Create();
-
+extern "C" void Delete(application_manager::plugin_manager::RPCPlugin* data);
#endif // SRC_COMPONENTS_APPLICATION_MANAGER_RPC_PLUGINS_SDL_RPC_PLUGIN_INCLUDE_SDL_RPC_PLUGIN_SDL_RPC_PLUGIN_H
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/sdl_rpc_plugin.cc b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/sdl_rpc_plugin.cc
index b261b20c24..5522066f76 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/sdl_rpc_plugin.cc
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/src/sdl_rpc_plugin.cc
@@ -84,6 +84,13 @@ void SDLRPCPlugin::ClearSubscriptions(app_mngr::ApplicationSharedPtr app) {
} // namespace sdl_rpc_plugin
-extern "C" application_manager::plugin_manager::RPCPlugin* Create() {
+extern "C" __attribute__((visibility("default")))
+application_manager::plugin_manager::RPCPlugin*
+Create() {
return new sdl_rpc_plugin::SDLRPCPlugin();
}
+
+extern "C" __attribute__((visibility("default"))) void Delete(
+ application_manager::plugin_manager::RPCPlugin* data) {
+ delete data;
+} \ No newline at end of file
diff --git a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/CMakeLists.txt b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/CMakeLists.txt
index 1a206c2cce..b21ab9dca8 100644
--- a/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/sdl_rpc_plugin/test/CMakeLists.txt
@@ -23,15 +23,8 @@ file(GLOB SOURCES
)
set(LIBRARIES
+ sdl_rpc_plugin_static
gmock
- Utils
- SmartObjects
- HMI_API
- MOBILE_API
- connectionHandler
- sdl_rpc_plugin
- jsoncpp
- Policy
)
create_cotired_test("sdl_commands_test" "${SOURCES}" "${LIBRARIES}" )
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/CMakeLists.txt b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/CMakeLists.txt
index 0e556a6993..8c29cccfff 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/CMakeLists.txt
@@ -45,18 +45,25 @@ collect_sources(VEHICLE_INFO_PLUGIN_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src")
set(LIBRARIES
HMI_API
MOBILE_API
+ MessageHelper
ApplicationManager
v4_protocol_v1_2_no_extra
SmartObjects
Utils
+ jsoncpp
+ connectionHandler
)
if(ENABLE_LOG)
list(APPEND LIBRARIES log4cxx -L${LOG4CXX_LIBS_DIRECTORY})
endif()
-add_library("vehicle_info_plugin" SHARED ${MOBILE_COMMANDS} ${HMI_COMMANDS} ${VEHICLE_INFO_PLUGIN_SOURCES})
-target_link_libraries("vehicle_info_plugin" ${LIBRARIES})
+add_library("vehicle_info_plugin_static" ${MOBILE_COMMANDS} ${HMI_COMMANDS} ${VEHICLE_INFO_PLUGIN_SOURCES})
+target_link_libraries("vehicle_info_plugin_static" ${LIBRARIES})
+
+add_library(vehicle_info_plugin SHARED "src/vehicle_info_plugin.cc" )
+target_link_libraries(vehicle_info_plugin vehicle_info_plugin_static)
+
set(INSTALL_DESTINATION bin)
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/include/vehicle_info_plugin/vehicle_info_plugin.h b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/include/vehicle_info_plugin/vehicle_info_plugin.h
index d0e4926a65..7b0b0a59b8 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/include/vehicle_info_plugin/vehicle_info_plugin.h
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/include/vehicle_info_plugin/vehicle_info_plugin.h
@@ -78,5 +78,5 @@ class VehicleInfoPlugin : public plugins::RPCPlugin {
} // namespace vehicle_info_plugin
extern "C" application_manager::plugin_manager::RPCPlugin* Create();
-
+extern "C" void Delete(application_manager::plugin_manager::RPCPlugin* data);
#endif // SRC_COMPONENTS_APPLICATION_MANAGER_RPC_PLUGINS_VEHICLE_INFO_PLUGIN_INCLUDE_VEHICLE_INFO_PLUGIN_VEHICLE_INFO_PLUGIN_H
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_plugin.cc b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_plugin.cc
index 70210f704e..cc1c22a248 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_plugin.cc
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/src/vehicle_info_plugin.cc
@@ -163,6 +163,13 @@ void VehicleInfoPlugin::DeleteSubscriptions(
}
} // namespace vehicle_info_plugin
-extern "C" application_manager::plugin_manager::RPCPlugin* Create() {
+extern "C" __attribute__((visibility("default")))
+application_manager::plugin_manager::RPCPlugin*
+Create() {
return new vehicle_info_plugin::VehicleInfoPlugin();
}
+
+extern "C" __attribute__((visibility("default"))) void Delete(
+ application_manager::plugin_manager::RPCPlugin* data) {
+ delete data;
+} \ No newline at end of file
diff --git a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/CMakeLists.txt b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/CMakeLists.txt
index 3ea4a50a8a..92984b6ad5 100644
--- a/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/CMakeLists.txt
+++ b/src/components/application_manager/rpc_plugins/vehicle_info_plugin/test/CMakeLists.txt
@@ -51,14 +51,8 @@ file(GLOB SOURCES
)
set(LIBRARIES
- gmock
- Utils
- SmartObjects
- HMI_API
- MOBILE_API
- connectionHandler
- vehicle_info_plugin
- jsoncpp
+ gmock
+ vehicle_info_plugin_static
)
create_cotired_test("vi_commands_test" "${SOURCES}" "${LIBRARIES}" )
diff --git a/src/components/application_manager/src/plugin_manager/rpc_plugin_manager_impl.cc b/src/components/application_manager/src/plugin_manager/rpc_plugin_manager_impl.cc
index ad313c638f..2248711037 100644
--- a/src/components/application_manager/src/plugin_manager/rpc_plugin_manager_impl.cc
+++ b/src/components/application_manager/src/plugin_manager/rpc_plugin_manager_impl.cc
@@ -29,10 +29,23 @@ bool IsLibraryFile(const std::string& file_path) {
return true;
}
-RPCPluginPtr LoadPlugin(const std::string& full_plugin_path) {
+template <typename T>
+T GetFuncFromLib(void* dl_handle, const std::string& function_name) {
+ T exported_func =
+ reinterpret_cast<T>(dlsym(dl_handle, function_name.c_str()));
+ char* error_string = dlerror();
+ if (nullptr != error_string) {
+ LOG4CXX_ERROR(logger_, "Failed to export symbols : " << error_string);
+ return nullptr;
+ }
+ return exported_func;
+}
+
+RPCPluginManagerImpl::RPCPluginPtr RPCPluginManagerImpl::LoadPlugin(
+ const std::string& full_plugin_path) const {
if (!IsLibraryFile(full_plugin_path)) {
LOG4CXX_DEBUG(logger_, "Skip loading " << full_plugin_path);
- return RPCPluginPtr();
+ return RPCPluginPtr(nullptr, [](RPCPlugin*) {});
}
void* plugin_dll = dlopen(full_plugin_path.c_str(), RTLD_LAZY);
@@ -40,21 +53,33 @@ RPCPluginPtr LoadPlugin(const std::string& full_plugin_path) {
LOG4CXX_ERROR(
logger_,
"Failed to open dll " << full_plugin_path << " : " << dlerror());
- return RPCPluginPtr();
+ return RPCPluginPtr(nullptr, [](RPCPlugin*) {});
}
typedef RPCPlugin* (*Create)();
- Create create_plugin = reinterpret_cast<Create>(dlsym(plugin_dll, "Create"));
- char* error_string = dlerror();
- if (nullptr != error_string) {
- LOG4CXX_ERROR(logger_,
- "Failed to export dll's " << full_plugin_path
- << " symbols : " << error_string);
+ Create create_plugin = GetFuncFromLib<Create>(plugin_dll, "Create");
+ if (!create_plugin) {
+ LOG4CXX_ERROR(logger_, "No Create function in " << full_plugin_path);
+ dlclose(plugin_dll);
+ return RPCPluginPtr(nullptr, [](RPCPlugin*) {});
+ }
+
+ typedef void (*Delete)(RPCPlugin*);
+ Delete delete_plugin = GetFuncFromLib<Delete>(plugin_dll, "Delete");
+ if (!delete_plugin) {
+ LOG4CXX_ERROR(logger_, "No Delete function in " << full_plugin_path);
dlclose(plugin_dll);
- return RPCPluginPtr();
+ return RPCPluginPtr(nullptr, [](RPCPlugin*) {});
}
+
+ auto plugin_destroyer = [delete_plugin, plugin_dll](RPCPlugin* plugin) {
+ LOG4CXX_DEBUG(logger_, "Delete plugin " << plugin->PluginName());
+ delete_plugin(plugin);
+ dlclose(plugin_dll);
+ return RPCPluginPtr(nullptr, [](RPCPlugin*) {});
+ };
RPCPlugin* plugin = create_plugin();
- return RPCPluginPtr(plugin);
+ return RPCPluginPtr(plugin, plugin_destroyer);
}
uint32_t RPCPluginManagerImpl::LoadPlugins(const std::string& plugins_path) {
@@ -82,7 +107,8 @@ uint32_t RPCPluginManagerImpl::LoadPlugins(const std::string& plugins_path) {
return loaded_plugins_.size();
}
-std::vector<RPCPluginPtr>& RPCPluginManagerImpl::GetPlugins() {
+std::vector<RPCPluginManagerImpl::RPCPluginPtr>&
+RPCPluginManagerImpl::GetPlugins() {
return loaded_plugins_;
}
diff --git a/src/components/application_manager/test/CMakeLists.txt b/src/components/application_manager/test/CMakeLists.txt
index 30c478e790..5b7aa80f20 100755
--- a/src/components/application_manager/test/CMakeLists.txt
+++ b/src/components/application_manager/test/CMakeLists.txt
@@ -88,7 +88,7 @@ set (RequestController_SOURCES
set(LIBRARIES
Utils
ApplicationManager
- sdl_rpc_plugin
+ sdl_rpc_plugin_static
jsoncpp
Policy
connectionHandler
diff --git a/src/components/application_manager/test/commands/CMakeLists.txt b/src/components/application_manager/test/commands/CMakeLists.txt
index 556f3a5032..ec7f454c47 100644
--- a/src/components/application_manager/test/commands/CMakeLists.txt
+++ b/src/components/application_manager/test/commands/CMakeLists.txt
@@ -58,7 +58,7 @@ set(LIBRARIES
connectionHandler
ApplicationManager
jsoncpp
- Policy
+ PolicyStatic
Resumption
)
diff --git a/src/components/application_manager/test/message_helper/CMakeLists.txt b/src/components/application_manager/test/message_helper/CMakeLists.txt
index 99031849f6..31b175cbf0 100755
--- a/src/components/application_manager/test/message_helper/CMakeLists.txt
+++ b/src/components/application_manager/test/message_helper/CMakeLists.txt
@@ -40,7 +40,7 @@ set(LIBRARIES
ApplicationManager
MessageHelper
jsoncpp
- Policy
+ PolicyStatic
connectionHandler
MediaManager
Resumption
diff --git a/src/components/media_manager/test/CMakeLists.txt b/src/components/media_manager/test/CMakeLists.txt
index f5d596f681..265a62a0d8 100644
--- a/src/components/media_manager/test/CMakeLists.txt
+++ b/src/components/media_manager/test/CMakeLists.txt
@@ -58,7 +58,7 @@ set(LIBRARIES
connectionHandler
encryption
Resumption
- Policy
+ PolicyStatic
${SecurityManagerLibrary}
)
diff --git a/src/components/policy/policy_external/CMakeLists.txt b/src/components/policy/policy_external/CMakeLists.txt
index bd05291245..80c3cb60e6 100644
--- a/src/components/policy/policy_external/CMakeLists.txt
+++ b/src/components/policy/policy_external/CMakeLists.txt
@@ -29,10 +29,9 @@
# POSSIBILITY OF SUCH DAMAGE.
# --- Policy
-set(target Policy)
set(install_destination bin)
set(copy_destination ${CMAKE_BINARY_DIR}/src/appMain)
-set(library_name ${CMAKE_SHARED_LIBRARY_PREFIX}${target}${CMAKE_SHARED_LIBRARY_SUFFIX})
+set(library_name ${CMAKE_SHARED_LIBRARY_PREFIX}Policy${CMAKE_SHARED_LIBRARY_SUFFIX})
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/Modules/")
@@ -75,21 +74,25 @@ else ()
list(APPEND LIBRARIES sqlite3)
endif ()
-add_library(${target} SHARED ${SOURCES})
-target_link_libraries(${target} ${LIBRARIES} )
+add_library(PolicyStatic ${SOURCES})
+target_link_libraries(PolicyStatic ${LIBRARIES})
+
+
+add_library(Policy SHARED "src/policy_manager_impl.cc")
+target_link_libraries(Policy PolicyStatic)
if (ENABLE_LOG)
- target_link_libraries(${target} log4cxx -L${LOG4CXX_LIBS_DIRECTORY})
+ target_link_libraries(Policy log4cxx -L${LOG4CXX_LIBS_DIRECTORY})
endif()
-add_custom_target(copy_library_${target} ALL
+add_custom_target(copy_library_Policy ALL
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${CMAKE_CURRENT_BINARY_DIR}/${library_name}
${copy_destination}
- DEPENDS ${target}
+ DEPENDS Policy
COMMENT "Copying library ${library_name}")
-install(TARGETS ${target}
+install(TARGETS Policy
DESTINATION ${install_destination}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
diff --git a/src/components/policy/policy_external/src/policy_manager_impl.cc b/src/components/policy/policy_external/src/policy_manager_impl.cc
index dd33bb86ab..c11bdefb90 100644
--- a/src/components/policy/policy_external/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_external/src/policy_manager_impl.cc
@@ -53,10 +53,12 @@
#include "policy/access_remote.h"
#include "policy/access_remote_impl.h"
-policy::PolicyManager* CreateManager() {
+__attribute__((visibility("default"))) policy::PolicyManager* CreateManager() {
return new policy::PolicyManagerImpl();
}
-void DeleteManager(policy::PolicyManager* pm) {
+
+__attribute__((visibility("default"))) void DeleteManager(
+ policy::PolicyManager* pm) {
delete pm;
}
namespace {
diff --git a/src/components/policy/policy_external/test/CMakeLists.txt b/src/components/policy/policy_external/test/CMakeLists.txt
index 8b77c90dd2..77b1b35973 100644
--- a/src/components/policy/policy_external/test/CMakeLists.txt
+++ b/src/components/policy/policy_external/test/CMakeLists.txt
@@ -42,7 +42,7 @@ include_directories(
set(testLibraries
gmock
Utils
- Policy
+ PolicyStatic
UsageStatistics
ConfigProfile
)
diff --git a/src/components/policy/policy_regular/CMakeLists.txt b/src/components/policy/policy_regular/CMakeLists.txt
index b7455388e9..f7f34564b6 100644
--- a/src/components/policy/policy_regular/CMakeLists.txt
+++ b/src/components/policy/policy_regular/CMakeLists.txt
@@ -89,8 +89,13 @@ else ()
list(APPEND LIBRARIES sqlite3)
endif ()
-add_library(Policy SHARED ${SOURCES})
-target_link_libraries(Policy ${LIBRARIES})
+
+add_library(PolicyStatic ${SOURCES})
+target_link_libraries(PolicyStatic ${LIBRARIES})
+
+
+add_library(Policy SHARED "src/policy_manager_impl.cc")
+target_link_libraries(Policy PolicyStatic)
if(ENABLE_LOG)
target_link_libraries(Policy log4cxx -L${LOG4CXX_LIBS_DIRECTORY})
diff --git a/src/components/policy/policy_regular/src/policy_manager_impl.cc b/src/components/policy/policy_regular/src/policy_manager_impl.cc
index 8bfa001293..5a7c822a9b 100644
--- a/src/components/policy/policy_regular/src/policy_manager_impl.cc
+++ b/src/components/policy/policy_regular/src/policy_manager_impl.cc
@@ -53,10 +53,12 @@
#include "policy/access_remote.h"
#include "policy/access_remote_impl.h"
-policy::PolicyManager* CreateManager() {
+__attribute__((visibility("default"))) policy::PolicyManager* CreateManager() {
return new policy::PolicyManagerImpl();
}
-void DeleteManager(policy::PolicyManager* pm) {
+
+__attribute__((visibility("default"))) void DeleteManager(
+ policy::PolicyManager* pm) {
delete pm;
}
diff --git a/src/components/policy/policy_regular/test/CMakeLists.txt b/src/components/policy/policy_regular/test/CMakeLists.txt
index bd6af96867..428a056882 100644
--- a/src/components/policy/policy_regular/test/CMakeLists.txt
+++ b/src/components/policy/policy_regular/test/CMakeLists.txt
@@ -49,7 +49,7 @@ collect_sources(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}")
set(LIBRARIES
gmock
Utils
- Policy
+ PolicyStatic
UsageStatistics
)
diff --git a/src/components/telemetry_monitor/CMakeLists.txt b/src/components/telemetry_monitor/CMakeLists.txt
index 093413ef3b..a9c0e14224 100644
--- a/src/components/telemetry_monitor/CMakeLists.txt
+++ b/src/components/telemetry_monitor/CMakeLists.txt
@@ -63,7 +63,7 @@ set(LIBRARIES
HMI_API
MOBILE_API
Utils
- Policy
+ PolicyStatic
)
add_library("TelemetryMonitor" ${SOURCES})
diff --git a/src/components/transport_manager/src/usb/libusb/usb_handler.cc b/src/components/transport_manager/src/usb/libusb/usb_handler.cc
index df3b7e128e..975f71e84c 100644
--- a/src/components/transport_manager/src/usb/libusb/usb_handler.cc
+++ b/src/components/transport_manager/src/usb/libusb/usb_handler.cc
@@ -90,20 +90,20 @@ UsbHandler::UsbHandler()
UsbHandler::~UsbHandler() {
shutdown_requested_ = true;
- if (libusb_context_ != 0) {
+ thread_->stop();
+ LOG4CXX_INFO(logger_, "UsbHandler thread finished");
+ if (libusb_context_ != 0) { // This wakes up libusb_handle_events()
libusb_hotplug_deregister_callback(libusb_context_,
arrived_callback_handle_);
libusb_hotplug_deregister_callback(libusb_context_, left_callback_handle_);
}
- thread_->stop();
- LOG4CXX_INFO(logger_, "UsbHandler thread finished");
+ thread_->join();
+ delete thread_->delegate();
+ threads::DeleteThread(thread_);
if (libusb_context_) {
libusb_exit(libusb_context_);
libusb_context_ = 0;
}
- thread_->join();
- delete thread_->delegate();
- threads::DeleteThread(thread_);
}
void UsbHandler::DeviceArrived(libusb_device* device_libusb) {
diff --git a/src/components/utils/CMakeLists.txt b/src/components/utils/CMakeLists.txt
index 9562b50e78..451a8a629e 100644
--- a/src/components/utils/CMakeLists.txt
+++ b/src/components/utils/CMakeLists.txt
@@ -58,7 +58,10 @@ set(EXCLUDE_PATHS
${DBMS_PATHS}
)
-set(LIBRARIES)
+set(LIBRARIES
+ encryption
+ jsoncpp
+)
if(NOT BUILD_BACKTRACE_SUPPORT)
list(APPEND EXCLUDE_PATHS
diff --git a/src/components/utils/src/push_log.cc b/src/components/utils/src/push_log.cc
index 6e16c99181..dea0e75274 100644
--- a/src/components/utils/src/push_log.cc
+++ b/src/components/utils/src/push_log.cc
@@ -36,8 +36,12 @@
namespace logger {
-static bool logs_enabled_ = false;
-static LogMessageLoopThread* log_message_loop_thread = NULL;
+struct __attribute__((visibility("default"))) LogsEnabled {
+ static std::atomic_bool logs_enabled_;
+};
+
+std::atomic_bool LogsEnabled::logs_enabled_(false);
+static std::unique_ptr<LogMessageLoopThread> log_message_loop_thread;
bool push_log(log4cxx::LoggerPtr logger,
log4cxx::LevelPtr level,
@@ -73,22 +77,22 @@ bool push_log(log4cxx::LoggerPtr logger,
}
bool logs_enabled() {
- return logs_enabled_;
+ return LogsEnabled::logs_enabled_;
}
void set_logs_enabled(bool state) {
- logs_enabled_ = state;
+ LogsEnabled::logs_enabled_ = state;
}
void create_log_message_loop_thread() {
if (!log_message_loop_thread) {
- log_message_loop_thread = new LogMessageLoopThread();
+ log_message_loop_thread =
+ std::unique_ptr<LogMessageLoopThread>(new LogMessageLoopThread);
}
}
void delete_log_message_loop_thread() {
- delete log_message_loop_thread;
- log_message_loop_thread = NULL;
+ log_message_loop_thread.reset();
}
void flush_logger() {
diff --git a/src/components/utils/test/CMakeLists.txt b/src/components/utils/test/CMakeLists.txt
index f6bd24ff09..b5127ccabc 100644
--- a/src/components/utils/test/CMakeLists.txt
+++ b/src/components/utils/test/CMakeLists.txt
@@ -87,7 +87,7 @@ collect_sources(SOURCES "${CMAKE_CURRENT_SOURCE_DIR}" "${EXCLUDE_PATHS}")
set(LIBRARIES
gmock
Utils
- Policy
+ PolicyStatic
ConfigProfile
)