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: