20namespace class_loader {
26ClassLoader* ClassLoaderManager::GetClassLoaderByLibPath(
27 const std::string& library_path) {
28 return libpath_loader_map_[library_path];
31std::vector<ClassLoader*> ClassLoaderManager::GetAllValidClassLoaders() {
32 std::vector<ClassLoader*> class_loaders;
33 for (
auto& lib_class_loader : libpath_loader_map_) {
34 class_loaders.emplace_back(lib_class_loader.second);
39std::vector<std::string> ClassLoaderManager::GetAllValidLibPath() {
40 std::vector<std::string> libpath;
41 for (
auto& lib_class_loader : libpath_loader_map_) {
42 if (lib_class_loader.second !=
nullptr) {
43 libpath.emplace_back(lib_class_loader.first);
50 std::vector<std::string> valid_libraries = GetAllValidLibPath();
51 return (valid_libraries.end() != std::find(valid_libraries.begin(),
52 valid_libraries.end(),
57 std::lock_guard<std::mutex> lck(libpath_loader_map_mutex_);
59 libpath_loader_map_[library_path] =
65int ClassLoaderManager::UnloadLibrary(
const std::string& library_path) {
66 int num_remain_unload = 0;
68 ClassLoader* class_loader = GetClassLoaderByLibPath(library_path);
69 if ((num_remain_unload = class_loader->
UnloadLibrary()) == 0) {
70 libpath_loader_map_[library_path] =
nullptr;
74 return num_remain_unload;
78 std::vector<std::string> valid_libraries = GetAllValidLibPath();
79 for (
auto& lib : valid_libraries) {
bool IsLibraryValid(const std::string &library_path)
bool LoadLibrary(const std::string &library_path)
virtual ~ClassLoaderManager()
for library load,createclass object