TSDuck v3.46-4930
MPEG Transport Stream Toolkit
Loading...
Searching...
No Matches
ts::ApplicationSharedLibrary Class Reference

#include <tsApplicationSharedLibrary.h>

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

Public Member Functions

 ApplicationSharedLibrary (const fs::path &filename, const UString &prefix=UString(), const UString &library_path=UString(), SharedLibraryFlags flags=SharedLibraryFlags::NONE, Report &report=(ts::NullReport::Instance()))
virtual ~ApplicationSharedLibrary () override
const UString & errorMessage () const
const fs::path & fileName () const
void * getSymbol (const std::string &name) const
bool isLoaded () const
UString moduleName () const
UString prefix () const

Static Public Member Functions

static void GetPluginList (UStringVector &files, const UString &prefix, const UString &library_path=UString())
static void GetSearchPath (UStringList &directories, const UString &library_path=UString())

Protected Member Functions

void load (const fs::path &filename)
void unload ()

Detailed Description

Representation of an application shared library.

Constructor & Destructor Documentation

◆ ApplicationSharedLibrary()

ts::ApplicationSharedLibrary::ApplicationSharedLibrary ( const fs::path & filename,
const UString & prefix = UString(),
const UString & library_path = UString(),
SharedLibraryFlags flags = SharedLibraryFlags::NONE,
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, search the file in a list of directories as defined in GetSearchPath(). 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_LIBRARY_PATH.
[in]flagsShared library options.
[in,out]reportWhere to report errors.
See also
GetSearchPath()

◆ ~ApplicationSharedLibrary()

virtual ts::ApplicationSharedLibrary::~ApplicationSharedLibrary ( )
overridevirtual

Virtual destructor.

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.

◆ GetSearchPath()

void ts::ApplicationSharedLibrary::GetSearchPath ( UStringList & directories,
const UString & library_path = UString() )
static

Get the list of directories where to search application shared libraries or plugins. The ordered list of directories is:

  • All directories in library_path environment variable (if the name is not empty).
  • Directory of the current executable.
  • Directories ../lib64/tsduck and ../lib64 from current executable (64-bit UNIX only).
  • Directories ../lib/tsduck and ../lib from current executable (UNIX only).
  • All directories in Path% environment variable (Windows only).
    Parameters
    [out]directoriesList of directories in search order.
    [in]library_pathName of an environment variable, an optional list of directories to search, similar to LD_LIBRARY_PATH.

◆ GetPluginList()

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_LIBRARY_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 fs::path & 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 fs::path & filename)
protectedinherited

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

Parameters
[in]filenameShared library file name.

◆ unload()

void ts::SharedLibrary::unload ( )
protectedinherited

Force unload, even if permanent


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