diff options
author | Adrian Kummerlaender | 2016-02-10 21:38:10 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2016-02-10 21:38:10 +0100 |
commit | 801ddda073b04c9751bc9e4f935bd102d7741c7b (patch) | |
tree | ba89c22d5ac7d1a6ea6367fab17376acf3f7b3b7 /src/utility/logger.cc | |
parent | 77ca603e933af25088057dc5e26cfda84bde7147 (diff) | |
download | change-801ddda073b04c9751bc9e4f935bd102d7741c7b.tar change-801ddda073b04c9751bc9e4f935bd102d7741c7b.tar.gz change-801ddda073b04c9751bc9e4f935bd102d7741c7b.tar.bz2 change-801ddda073b04c9751bc9e4f935bd102d7741c7b.tar.lz change-801ddda073b04c9751bc9e4f935bd102d7741c7b.tar.xz change-801ddda073b04c9751bc9e4f935bd102d7741c7b.tar.zst change-801ddda073b04c9751bc9e4f935bd102d7741c7b.zip |
Replace macro argument expansion with more idiomatic recursive template
Diffstat (limited to 'src/utility/logger.cc')
-rw-r--r-- | src/utility/logger.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/utility/logger.cc b/src/utility/logger.cc new file mode 100644 index 0000000..cb5c79a --- /dev/null +++ b/src/utility/logger.cc @@ -0,0 +1,21 @@ +#include "logger.h" + +namespace utility { + +// Forward the contents of a given standard output stream to the log target +// +// While `this->stream_ << stream.rdbuf()` would be more effective it sadly +// does not work with `boost::process::pistream` due to a broken pipe error +// in conjunction with the required `boost::process::capture_stream` context +// flag. +// +void Logger::forward(boost::process::pistream& stream) { + std::lock_guard<std::mutex> guard(this->write_mutex_); + + this->stream_ << std::string( + (std::istreambuf_iterator<char>(stream)), + (std::istreambuf_iterator<char>()) + ); +} + +} |