loolwsd/TraceFile.hpp | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-)
New commits: commit 3469fd95377456fdd2ff7d3a71d4f74f898021e9 Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Wed Aug 17 19:41:58 2016 -0400 loolstress: seemingly support plain text and .gz trace files Change-Id: I6eb6c8f0b6476c8d0af7bf90ccf15712df0dbbd5 Reviewed-on: https://gerrit.libreoffice.org/28285 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/loolwsd/TraceFile.hpp b/loolwsd/TraceFile.hpp index 8b25252..576121f 100644 --- a/loolwsd/TraceFile.hpp +++ b/loolwsd/TraceFile.hpp @@ -14,6 +14,7 @@ #include <vector> #include <Poco/DeflatingStream.h> +#include <Poco/InflatingStream.h> #include "Util.hpp" @@ -135,8 +136,10 @@ class TraceFileReader { public: TraceFileReader(const std::string& path) : + _compressed(path.size() > 2 && path.substr(path.size() - 2) == "gz"), _epochStart(0), - _stream(path), + _stream(path, _compressed ? std::ios::binary : std::ios::in), + _inflater(_stream, Poco::InflatingStreamBuf::STREAM_GZIP), _index(0), _indexIn(-1), _indexOut(-1) @@ -144,6 +147,11 @@ public: readFile(); } + ~TraceFileReader() + { + _stream.close(); + } + Poco::Int64 getEpoch() const { return _epochStart; } TraceFileRecord getNextRecord() @@ -188,8 +196,22 @@ private: _records.clear(); std::string line; - while (std::getline(_stream, line) && !line.empty()) + for (;;) { + if (_compressed) + { + std::getline(_inflater, line); + } + else + { + std::getline(_stream, line); + } + + if (line.empty()) + { + break; + } + const auto v = split(line, line[0]); if (v.size() == 4) { @@ -253,8 +275,10 @@ private: } private: + const bool _compressed; Poco::Int64 _epochStart; std::ifstream _stream; + Poco::InflatingInputStream _inflater; std::vector<TraceFileRecord> _records; unsigned _index; unsigned _indexIn; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits