TSDuck Version 3.16-1064 (TSDuck - The MPEG Transport Stream Toolkit)
ts::ApplicationSharedLibrary Class Reference

Representation of an application shared library. More...

Inheritance diagram for ts::ApplicationSharedLibrary:
Collaboration diagram for ts::ApplicationSharedLibrary:

Public Member Functions

 ApplicationSharedLibrary (const UString &filename, const UString &prefix=UString(), const UString &library_path=UString(), bool permanent=false, Report &report=(*ts::NullReport::Instance()))
 Constructor. More...
 
const UStringerrorMessage () const
 Return a message describing the constructor error. More...
 
const UStringfileName () const
 Return actual file name of shared library. More...
 
void * getSymbol (const std::string &name) const
 Get the value of an exported symbol inside the shared library. More...
 
bool isLoaded () const
 Check if the library was successfully loaded. More...
 
UString moduleName () const
 The module name is derived from the file name without the prefix. More...
 
UString prefix () const
 Get the prefix. More...
 

Static Public Member Functions

static void GetPluginList (UStringVector &files, const UString &prefix, const UString &library_path=UString())
 Get a list of plugins. More...
 

Protected Member Functions

void load (const UString &filename)
 Try to load an alternate file if the shared library is not yet loaded. More...
 
void unload ()
 Force unload, even if permanent.
 

Detailed Description

Representation of an application shared library.

Constructor & Destructor Documentation

◆ ApplicationSharedLibrary()

ts::ApplicationSharedLibrary::ApplicationSharedLibrary ( const UString filename,
const UString prefix = UString(),
const UString library_path = UString(),
bool  permanent = false,
Report report = (*ts::NullReport::Instance()) 
)
explicit

Constructor.

Parameters
[in]filenameShared library file name. Directory and suffix are optional. If filename contains a directory, the specified file is used directly, with and without suffix (.so, .dll). If filename is just a name without directory, a search algorithm is used. All directories in library_path are searched. Then the same directory as the executable is searched. In each directory, a file with prefix is searched. Then, if not found, without prefix. Finally, when everything failed, filename is searched with the default system lookup mechanism.
[in]prefixPrefix to add to filename if the file is not found.
[in]library_pathName of an environment variable, an optional list of directories to search, similar to LD_LIBARY_PATH.
[in]permanentIf false (the default), the shared library is unloaded from the current process when this object is destroyed. If true, the shared library remains active.
[in,out]reportWhere to report errors.

Member Function Documentation

◆ moduleName()

UString ts::ApplicationSharedLibrary::moduleName ( ) const

The module name is derived from the file name without the prefix.

Returns
The module name.

◆ prefix()

UString ts::ApplicationSharedLibrary::prefix ( ) const
inline

Get the prefix.

Returns
The file name prefix.

◆ GetPluginList()

static void ts::ApplicationSharedLibrary::GetPluginList ( UStringVector files,
const UString prefix,
const UString library_path = UString() 
)
static

Get a list of plugins.

Parameters
[out]filesList of shared library files.
[in]prefixPrefix for plugin names.
[in]library_pathName of an environment variable, an optional list of directories to search, similar to LD_LIBARY_PATH.

◆ isLoaded()

bool ts::SharedLibrary::isLoaded ( ) const
inlineinherited

Check if the library was successfully loaded.

Returns
True if the library was successfully loaded.

◆ errorMessage()

const UString& ts::SharedLibrary::errorMessage ( ) const
inlineinherited

Return a message describing the constructor error.

Useful when isLoaded() == false.

Returns
An error message.

◆ fileName()

const UString& ts::SharedLibrary::fileName ( ) const
inlineinherited

Return actual file name of shared library.

Returns
The actual file name of shared library.

◆ getSymbol()

void* ts::SharedLibrary::getSymbol ( const std::string &  name) const
inherited

Get the value of an exported symbol inside the shared library.

Parameters
[in]nameSymbol name, using 8-bit characters, not Unicode.
Returns
The symbol value or 0 on error. When the symbol is an address, the returned value is a virtual memory address inside the current process.

◆ load()

void ts::SharedLibrary::load ( const UString filename)
protectedinherited

Try to load an alternate file if the shared library is not yet loaded.

Parameters
[in]filenameShared library file name.

The documentation for this class was generated from the following file: