loolwsd/LOOLStress.cpp | 4 ++- loolwsd/TraceFile.hpp | 55 +++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 3 deletions(-)
New commits: commit 4d7c2e4002b51d4a1347a5178103612df2985ddc Author: Ashod Nakashian <ashod.nakash...@collabora.co.uk> Date: Sun Jul 31 18:06:01 2016 -0400 loolstress: parse trace file Change-Id: I04964744a74d3a025e310d7ec52f5d1f5b6d100d Reviewed-on: https://gerrit.libreoffice.org/27960 Reviewed-by: Ashod Nakashian <ashnak...@gmail.com> Tested-by: Ashod Nakashian <ashnak...@gmail.com> diff --git a/loolwsd/LOOLStress.cpp b/loolwsd/LOOLStress.cpp index 6bda492..ef06135 100644 --- a/loolwsd/LOOLStress.cpp +++ b/loolwsd/LOOLStress.cpp @@ -79,12 +79,14 @@ class Worker: public Runnable public: Worker(Stress& app, const std::string& traceFilePath) : - _app(app), _traceFilePath(traceFilePath) + _app(app), _traceFile(traceFilePath) { } void run() override { + _traceFile.readFile(); + std::cerr << "Connecting to server: " << _app._serverURI << "\n"; Poco::URI uri(_app._serverURI); diff --git a/loolwsd/TraceFile.hpp b/loolwsd/TraceFile.hpp index 73713e6..cf51981 100644 --- a/loolwsd/TraceFile.hpp +++ b/loolwsd/TraceFile.hpp @@ -9,7 +9,9 @@ #include <fstream> #include <mutex> +#include <sstream> #include <string> +#include <vector> /// Dumps commands and notification trace. class TraceFileWriter @@ -54,18 +56,67 @@ private: std::mutex _mutex; }; +class TraceFileRecord +{ +public: + enum class Direction + { + Incoming, + Outgoing + }; + + Direction Dir; + unsigned TimestampNs; + std::string Payload; +}; + class TraceFileReader { public: TraceFileReader(const std::string& path) : _epochStart(Poco::Timestamp().epochMicroseconds()), - _stream(path, std::ios::in) + _stream(path) { } + void readFile() + { + std::string line; + while (std::getline(_stream, line) && !line.empty()) + { + const auto v = split(line, line[0]); + if (v.size() == 2) + { + TraceFileRecord rec; + rec.Dir = (line[0] == '>' ? TraceFileRecord::Direction::Incoming : TraceFileRecord::Direction::Outgoing); + rec.TimestampNs = std::atoi(v[0].c_str()); + rec.Payload = v[1]; + _records.push_back(rec); + } + } + } + +private: + std::vector<std::string> split(const std::string& s, const char delim) + { + std::stringstream ss(s); + std::string item; + std::vector<std::string> v; + while (std::getline(ss, item, delim)) + { + if (!item.empty()) + { + v.push_back(item); + } + } + + return v; + } + private: const Poco::Int64 _epochStart; - std::fstream _stream; + std::ifstream _stream; + std::vector<TraceFileRecord> _records; }; /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits