A ClassLoader that can bind more than one runtime library. More...
#include <multi_library_class_loader.hpp>
Public Member Functions | |
| template<class Base > | |
| boost::shared_ptr< Base > | createInstance (const std::string &class_name) |
| Creates an instance of an object of given class name with ancestor class Base Same as createSharedInstance() except it returns a boost::shared_ptr. More... | |
| template<class Base > | |
| boost::shared_ptr< Base > | createInstance (const std::string &class_name, const std::string &library_path) |
| Creates an instance of an object of given class name with ancestor class Base Same as createSharedInstance() except it returns a boost::shared_ptr. More... | |
| template<class Base > | |
| std::shared_ptr< Base > | createSharedInstance (const std::string &class_name) |
| Creates an instance of an object of given class name with ancestor class Base This version does not look in a specific library for the factory, but rather the first open library that defines the classs. More... | |
| template<class Base > | |
| std::shared_ptr< Base > | createSharedInstance (const std::string &class_name, const std::string &library_path) |
| Creates an instance of an object of given class name with ancestor class Base This version takes a specific library to make explicit the factory being used. More... | |
| template<class Base > | |
| ClassLoader::UniquePtr< Base > | createUniqueInstance (const std::string &class_name) |
| Creates an instance of an object of given class name with ancestor class Base Same as createSharedInstance() except it returns a std::unique_ptr. More... | |
| template<class Base > | |
| ClassLoader::UniquePtr< Base > | createUniqueInstance (const std::string &class_name, const std::string &library_path) |
| Creates an instance of an object of given class name with ancestor class Base Same as createSharedInstance() except it returns a std::unique_ptr. More... | |
| template<class Base > | |
| Base * | createUnmanagedInstance (const std::string &class_name) |
| Creates an instance of an object of given class name with ancestor class Base This version does not look in a specific library for the factory, but rather the first open library that defines the classs This version should not be used as the plugin system cannot do automated safe loading/unloadings. More... | |
| template<class Base > | |
| Base * | createUnmanagedInstance (const std::string &class_name, const std::string &library_path) |
| Creates an instance of an object of given class name with ancestor class Base This version takes a specific library to make explicit the factory being used This version should not be used as the plugin system cannot do automated safe loading/unloadings. More... | |
| template<class Base > | |
| std::vector< std::string > | getAvailableClasses () |
| Gets a list of all classes that are loaded by the class loader. More... | |
| template<class Base > | |
| std::vector< std::string > | getAvailableClassesForLibrary (const std::string &library_path) |
| Gets a list of all classes loaded for a particular library. More... | |
| std::vector< std::string > | getRegisteredLibraries () |
| Gets a list of all libraries opened by this class loader . More... | |
| template<class Base > | |
| bool | isClassAvailable (const std::string &class_name) |
| Indicates if a class has been loaded and can be instantiated. More... | |
| bool | isLibraryAvailable (const std::string &library_path) |
| Indicates if a library has been loaded into memory. More... | |
| void | loadLibrary (const std::string &library_path) |
| Loads a library into memory for this class loader. More... | |
| MultiLibraryClassLoader (bool enable_ondemand_loadunload) | |
| Constructor for the class. More... | |
| int | unloadLibrary (const std::string &library_path) |
| Unloads a library for this class loader. More... | |
| virtual | ~MultiLibraryClassLoader () |
| Virtual destructor for class. More... | |
Private Member Functions | |
| ClassLoaderVector | getAllAvailableClassLoaders () |
| Gets all class loaders loaded within scope. More... | |
| template<typename Base > | |
| ClassLoader * | getClassLoaderForClass (const std::string &class_name) |
| Gets a handle to the class loader corresponding to a specific class. More... | |
| ClassLoader * | getClassLoaderForLibrary (const std::string &library_path) |
| Gets a handle to the class loader corresponding to a specific runtime library. More... | |
| bool | isOnDemandLoadUnloadEnabled () |
| Indicates if on-demand (lazy) load/unload is enabled so libraries are loaded/unloaded automatically as needed. More... | |
| void | shutdownAllClassLoaders () |
| Destroys all ClassLoaders. More... | |
Private Attributes | |
| LibraryToClassLoaderMap | active_class_loaders_ |
| bool | enable_ondemand_loadunload_ |
| boost::mutex | loader_mutex_ |
A ClassLoader that can bind more than one runtime library.
Definition at line 56 of file multi_library_class_loader.hpp.
|
explicit |
Constructor for the class.
| enable_ondemand_loadunload | - Flag indicates if classes are to be loaded/unloaded automatically as class_loader are created and destroyed |
Definition at line 39 of file multi_library_class_loader.cpp.
|
virtual |
Virtual destructor for class.
Definition at line 44 of file multi_library_class_loader.cpp.
|
inline |
Creates an instance of an object of given class name with ancestor class Base Same as createSharedInstance() except it returns a boost::shared_ptr.
Definition at line 123 of file multi_library_class_loader.hpp.
|
inline |
Creates an instance of an object of given class name with ancestor class Base Same as createSharedInstance() except it returns a boost::shared_ptr.
Definition at line 147 of file multi_library_class_loader.hpp.
|
inline |
Creates an instance of an object of given class name with ancestor class Base This version does not look in a specific library for the factory, but rather the first open library that defines the classs.
| Base | - polymorphic type indicating base class |
| class_name | - the name of the concrete plugin class we want to instantiate |
Definition at line 78 of file multi_library_class_loader.hpp.
|
inline |
Creates an instance of an object of given class name with ancestor class Base This version takes a specific library to make explicit the factory being used.
| Base | - polymorphic type indicating base class |
| class_name | - the name of the concrete plugin class we want to instantiate |
| library_path | - the library from which we want to create the plugin |
Definition at line 106 of file multi_library_class_loader.hpp.
|
inline |
Creates an instance of an object of given class name with ancestor class Base Same as createSharedInstance() except it returns a std::unique_ptr.
Definition at line 164 of file multi_library_class_loader.hpp.
|
inline |
Creates an instance of an object of given class name with ancestor class Base Same as createSharedInstance() except it returns a std::unique_ptr.
Definition at line 186 of file multi_library_class_loader.hpp.
|
inline |
Creates an instance of an object of given class name with ancestor class Base This version does not look in a specific library for the factory, but rather the first open library that defines the classs This version should not be used as the plugin system cannot do automated safe loading/unloadings.
| Base | - polymorphic type indicating base class |
| class_name | - the name of the concrete plugin class we want to instantiate |
Definition at line 207 of file multi_library_class_loader.hpp.
|
inline |
Creates an instance of an object of given class name with ancestor class Base This version takes a specific library to make explicit the factory being used This version should not be used as the plugin system cannot do automated safe loading/unloadings.
| Base | - polymorphic type indicating Base class |
| class_name | - name of class for which we want to create instance |
| library_path | - the fully qualified path to the runtime library |
Definition at line 226 of file multi_library_class_loader.hpp.
|
private |
Gets all class loaders loaded within scope.
Definition at line 68 of file multi_library_class_loader.cpp.
|
inline |
Gets a list of all classes that are loaded by the class loader.
Definition at line 265 of file multi_library_class_loader.hpp.
|
inline |
Gets a list of all classes loaded for a particular library.
Definition at line 282 of file multi_library_class_loader.hpp.
|
inlineprivate |
Gets a handle to the class loader corresponding to a specific class.
| class_name | - name of class for which we want to create instance |
Definition at line 331 of file multi_library_class_loader.hpp.
|
private |
Gets a handle to the class loader corresponding to a specific runtime library.
| library_path | - the library from which we want to create the plugin |
Definition at line 60 of file multi_library_class_loader.cpp.
| std::vector< std::string > class_loader::MultiLibraryClassLoader::getRegisteredLibraries | ( | ) |
Gets a list of all libraries opened by this class loader .
Definition at line 49 of file multi_library_class_loader.cpp.
|
inline |
Indicates if a class has been loaded and can be instantiated.
| Base | - polymorphic type indicating Base class |
| class_name | - name of class that is be inquired about |
Definition at line 245 of file multi_library_class_loader.hpp.
| bool class_loader::MultiLibraryClassLoader::isLibraryAvailable | ( | const std::string & | library_path | ) |
Indicates if a library has been loaded into memory.
| library_path | - The full qualified path to the runtime library |
Definition at line 77 of file multi_library_class_loader.cpp.
|
inlineprivate |
Indicates if on-demand (lazy) load/unload is enabled so libraries are loaded/unloaded automatically as needed.
Definition at line 316 of file multi_library_class_loader.hpp.
| void class_loader::MultiLibraryClassLoader::loadLibrary | ( | const std::string & | library_path | ) |
Loads a library into memory for this class loader.
| library_path | - the fully qualified path to the runtime library |
Definition at line 82 of file multi_library_class_loader.cpp.
|
private |
Destroys all ClassLoaders.
Definition at line 90 of file multi_library_class_loader.cpp.
| int class_loader::MultiLibraryClassLoader::unloadLibrary | ( | const std::string & | library_path | ) |
Unloads a library for this class loader.
| library_path | - the fully qualified path to the runtime library |
Definition at line 99 of file multi_library_class_loader.cpp.
|
private |
Definition at line 357 of file multi_library_class_loader.hpp.
|
private |
Definition at line 356 of file multi_library_class_loader.hpp.
|
private |
Definition at line 358 of file multi_library_class_loader.hpp.