Base class with all necessary features to intercept output to a file descriptor.
More...
#include <IOIntercept.h>
|
| StreamInterceptor (std::ostream &stream, FILE *fileObject) |
| Construct keeping a reference to the std::ostream and the file descriptor which are associated with this stream as well as a file descriptor for the replacement. More...
|
|
| ~StreamInterceptor () |
| close file descriptors
|
|
bool | start () |
| start intercepting the stream. More...
|
|
bool | finish () |
| stop intercepting the stream. More...
|
|
|
void | setReplacementFD (int fd) |
| set the replacement file descriptor, should be called in the constructor of derived classes
|
|
bool | replaceFD (int fileDescriptor) |
| Replace the file descriptor of m_fileObject with the one passed. More...
|
|
|
static void | readFD (int fd, std::string &out) |
| Read the contents of a file descriptor until there is no more input and place them in out. More...
|
|
|
std::ostream & | m_stream |
| C++ stream object, only needed to flush before replacement.
|
|
FILE * | m_fileObject |
| File object of the file we want to replace, needed to obtain file descriptor and to flush.
|
|
int | m_savedFD { -1} |
| Saved file descriptor: a duplicate of the file descriptor of m_fileObject.
|
|
int | m_replacementFD { -1} |
| Replacement file descriptor to be used while capturing.
|
|
bool | m_capturing {false} |
| Check whether we are already capturing.
|
|
Base class with all necessary features to intercept output to a file descriptor.
Definition at line 23 of file IOIntercept.h.
◆ StreamInterceptor()
Construct keeping a reference to the std::ostream and the file descriptor which are associated with this stream as well as a file descriptor for the replacement.
- Parameters
-
stream | C++ ostream which is associated with the file descriptor we want to intercept |
fileObject | file object which is associated with the file descriptor we want to intercept |
Definition at line 88 of file IOIntercept.cc.
92 B2ERROR(
"Error duplicating file descriptor: " << std::strerror(errno));
std::ostream & m_stream
C++ stream object, only needed to flush before replacement.
FILE * m_fileObject
File object of the file we want to replace, needed to obtain file descriptor and to flush.
int m_savedFD
Saved file descriptor: a duplicate of the file descriptor of m_fileObject.
◆ finish()
stop intercepting the stream.
- Returns
- true if the object was capturing and stream could be restored
Definition at line 46 of file IOIntercept.h.
◆ readFD()
void readFD |
( |
int |
fd, |
|
|
std::string & |
out |
|
) |
| |
|
staticprotected |
Read the contents of a file descriptor until there is no more input and place them in out.
- Parameters
-
fd | file descriptor to read, should be opened in non blocking mode O_NOBLOCK |
out | string to be replaced with all the bytes read from fd |
Definition at line 102 of file IOIntercept.cc.
◆ replaceFD()
bool replaceFD |
( |
int |
fileDescriptor | ) |
|
|
protected |
Replace the file descriptor of m_fileObject with the one passed.
- Parameters
-
fileDescriptor | file descriptor to be set for m_fileObject using dup2() |
Definition at line 120 of file IOIntercept.cc.
◆ start()
start intercepting the stream.
- Returns
- true on success, false on any error
Definition at line 38 of file IOIntercept.h.
The documentation for this class was generated from the following files: