C++ Micro Services: SharedLibrary Class Reference
SharedLibrary Class Reference

The SharedLibrary class loads shared libraries at runtime. More...

Public Member Functions

 SharedLibrary ()
 
 SharedLibrary (const SharedLibrary &other)
 
 SharedLibrary (const std::string &libPath, const std::string &name)
 Construct a SharedLibrary object using a library search path and a library base name. More...
 
 SharedLibrary (const std::string &absoluteFilePath)
 Construct a SharedLibrary object using an absolute file path to the shared library. More...
 
 ~SharedLibrary ()
 Destroys this object but does not unload the shared library. More...
 
SharedLibraryoperator= (const SharedLibrary &other)
 
void Load ()
 Loads the shared library pointed to by this SharedLibrary object. More...
 
void Load (int flags)
 Loads the shared library pointed to by this SharedLibrary object, using the specified flags on POSIX systems. More...
 
void Unload ()
 Un-loads the shared library pointed to by this SharedLibrary object. More...
 
void SetName (const std::string &name)
 Sets the base name of the shared library. More...
 
std::string GetName () const
 Gets the base name of the shared library. More...
 
std::string GetFilePath (const std::string &name) const
 Gets the absolute file path for the shared library with base name name, using the search path returned by GetLibraryPath(). More...
 
void SetFilePath (const std::string &absoluteFilePath)
 Sets the absolute file path of this SharedLibrary object. More...
 
std::string GetFilePath () const
 Gets the absolute file path of this SharedLibrary object. More...
 
void SetLibraryPath (const std::string &path)
 Sets a new library search path. More...
 
std::string GetLibraryPath () const
 Gets the library search path of this SharedLibrary object. More...
 
void SetSuffix (const std::string &suffix)
 Sets the suffix for shared library names (e.g. More...
 
std::string GetSuffix () const
 Gets the file name suffix of this SharedLibrary object. More...
 
void SetPrefix (const std::string &prefix)
 Sets the file name prefix for shared library names (e.g. More...
 
std::string GetPrefix () const
 Gets the file name prefix of this SharedLibrary object. More...
 
void * GetHandle () const
 Gets the internal handle of this SharedLibrary object. More...
 
bool IsLoaded () const
 Gets the loaded/unloaded stated of this SharedLibrary object. More...
 

Detailed Description

The SharedLibrary class loads shared libraries at runtime.

Constructor & Destructor Documentation

SharedLibrary::SharedLibrary ( )
SharedLibrary::SharedLibrary ( const SharedLibrary other)
SharedLibrary::SharedLibrary ( const std::string &  libPath,
const std::string &  name 
)

Construct a SharedLibrary object using a library search path and a library base name.

Parameters
libPathAn absolute path containing the shared library
nameThe base name of the shared library, without prefix and suffix.
SharedLibrary::SharedLibrary ( const std::string &  absoluteFilePath)

Construct a SharedLibrary object using an absolute file path to the shared library.

Using this constructor effectively disables all setters except SetFilePath().

Parameters
absoluteFilePathThe absolute path to the shared library.
SharedLibrary::~SharedLibrary ( )

Destroys this object but does not unload the shared library.

Member Function Documentation

std::string SharedLibrary::GetFilePath ( const std::string &  name) const

Gets the absolute file path for the shared library with base name name, using the search path returned by GetLibraryPath().

Parameters
nameThe shared library base name.
Returns
The absolute file path of the shared library.
std::string SharedLibrary::GetFilePath ( ) const

Gets the absolute file path of this SharedLibrary object.

Returns
The absolute file path of the shared library.
void* SharedLibrary::GetHandle ( ) const

Gets the internal handle of this SharedLibrary object.

Returns
NULL if the shared library is not loaded, the operating system specific handle otherwise.
std::string SharedLibrary::GetLibraryPath ( ) const

Gets the library search path of this SharedLibrary object.

Returns
The library search path.
std::string SharedLibrary::GetName ( ) const

Gets the base name of the shared library.

Returns
The shared libraries base name.
std::string SharedLibrary::GetPrefix ( ) const

Gets the file name prefix of this SharedLibrary object.

Returns
The file name prefix of the shared library.
std::string SharedLibrary::GetSuffix ( ) const

Gets the file name suffix of this SharedLibrary object.

Returns
The file name suffix of the shared library.
bool SharedLibrary::IsLoaded ( ) const

Gets the loaded/unloaded stated of this SharedLibrary object.

Returns
true if the shared library is loaded, false otherwise.
void SharedLibrary::Load ( )

Loads the shared library pointed to by this SharedLibrary object.

On POSIX systems dlopen() is called with the RTLD_LAZY and RTLD_LOCAL flags unless the compiler is gcc 4.4.x or older. Then the RTLD_LAZY and RTLD_GLOBAL flags are used to load the shared library to work around RTTI problems across shared library boundaries.

Exceptions
std::logic_errorIf the library is already loaded.
std::runtime_errorIf loading the library failed.
void SharedLibrary::Load ( int  flags)

Loads the shared library pointed to by this SharedLibrary object, using the specified flags on POSIX systems.

Exceptions
std::logic_errorIf the library is already loaded.
std::runtime_errorIf loading the library failed.
SharedLibrary& SharedLibrary::operator= ( const SharedLibrary other)
void SharedLibrary::SetFilePath ( const std::string &  absoluteFilePath)

Sets the absolute file path of this SharedLibrary object.

Using this methods with a non-empty absoluteFilePath argument effectively disables all other setters.

Parameters
absoluteFilePathThe new absolute file path of this SharedLibrary object.
void SharedLibrary::SetLibraryPath ( const std::string &  path)

Sets a new library search path.

Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.

Parameters
pathThe new shared library search path.
void SharedLibrary::SetName ( const std::string &  name)

Sets the base name of the shared library.

Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.

Parameters
nameThe base name of the shared library, without prefix and suffix.
void SharedLibrary::SetPrefix ( const std::string &  prefix)

Sets the file name prefix for shared library names (e.g.

.dll or .so). Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.

Parameters
prefixThe shared library name prefix.
void SharedLibrary::SetSuffix ( const std::string &  suffix)

Sets the suffix for shared library names (e.g.

lib). Does nothing if the shared library is already loaded or the SharedLibrary(const std::string&) constructor was used.

Parameters
suffixThe shared library name suffix.
void SharedLibrary::Unload ( )

Un-loads the shared library pointed to by this SharedLibrary object.

Exceptions
std::runtime_errorIf an error occurred while un-loading the shared library.