![]() |
TSDuck v3.46-4816
MPEG Transport Stream Toolkit
|
A class to redirect a standard stream. More...
#include <tsStdio.h>


Public Member Functions | |
| Redirector (Report *report, Id id, const fs::path &name, std::ios::openmode mode=std::ios::binary) | |
| Constructor, the redirection is automatically started. | |
| Redirector (ReporterBase *delegate, Id id, const fs::path &name, std::ios::openmode mode=std::ios::binary) | |
| Constructor, the redirection is automatically started. | |
| virtual | ~Redirector () override |
| Destructor, the redirection is terminated and restore the previous stream. | |
| Id | id () const |
| Get the stream id. | |
| bool | muteReport (bool mute) |
| Temporarily mute the associated report. | |
| virtual Report & | report () const override |
| Access the Report which is associated with this object. | |
| Report * | setReport (Report *report) |
| Associate this object with another Report to log errors. | |
| ReporterBase * | setReport (ReporterBase *delegate) |
| Associate this object with another ReporterBase to log errors. | |
Static Public Member Functions | |
| static int | SilentLevel (bool silent, int default_severity=Severity::Error) |
| Compute a log severity level from a "silent" parameter. | |
A class to redirect a standard stream.
The constructor redirects a specific input or output stream from or to a given file. The destructor automatically restores the previous stream.
If the file name is empty or "-", no redirection occurs, making this mechanism quite useful for optional redirection based on command line arguments.
| ts::Stdio::Redirector::Redirector | ( | Report * | report, |
| Id | id, | ||
| const fs::path & | name, | ||
| std::ios::openmode | mode = std::ios::binary |
||
| ) |
Constructor, the redirection is automatically started.
| [in] | report | Where to report errors. The report object must remain valid as long as this object exists or setReport() is used with another Report object. If report is null, log messages are discarded. If report is a subclass of ts::Args, terminate the application on error. |
| [in] | id | Standard stream to manage. |
| [in] | name | File name from or to which the standard stream is redirected. If empty or "-", the standard stream is not redirected. |
| [in] | mode | Mode to use to open the file, std::ios::binary by default. |
| ts::Stdio::Redirector::Redirector | ( | ReporterBase * | delegate, |
| Id | id, | ||
| const fs::path & | name, | ||
| std::ios::openmode | mode = std::ios::binary |
||
| ) |
Constructor, the redirection is automatically started.
| [in] | delegate | Use the report of another ReporterBase. If delegate is null, log messages are discarded. If the resulting report is a subclass of ts::Args, terminate the application on error. |
| [in] | id | Standard stream to manage. |
| [in] | name | File name from or to which the standard stream is redirected. If empty or "-", the standard stream is not redirected. |
| [in] | mode | Mode to use to open the file, std::ios::binary by default. |
|
inline |
Get the stream id.
|
overridevirtualinherited |
Access the Report which is associated with this object.
Can be called from another thread only if the Report object is thread-safe.
Implements ts::ReporterInterface.
Associate this object with another Report to log errors.
| [in] | report | Where to report errors. The report object must remain valid as long as this object exists or setReport() is used with another Report object. If report is null, log messages are discarded. |
|
inherited |
Associate this object with another ReporterBase to log errors.
| [in] | delegate | Use the report of another ReporterBase. If delegate is null, the previous explicit Report is used.. |
|
inherited |
Temporarily mute the associated report.
| [in] | mute | It true, report() will return a null report (log messages are discarded), until muteReport() is invoked again with mute set to false. |
|
inlinestaticinherited |
Compute a log severity level from a "silent" parameter.
Some subclass methods have a "silent" parameter to avoid reporting errors which may be insignificant, typically when closing a device after an error, in which case the close operation may produce other errors if the previous error left the device in an inconsistent state. While those errors should not be displayed as errors, we still display them at debug level.
| [in] | silent | If true, do not report errors, report debug messages instead. |
| [in] | default_severity | Default severity, in non-silent mode (error by default). |