summaryrefslogtreecommitdiff
path: root/src/monitor-cmd.cc
diff options
context:
space:
mode:
authorJoel Klinghed <the_jk@yahoo.com>2017-08-10 21:55:29 +0200
committerJoel Klinghed <the_jk@yahoo.com>2017-08-10 21:55:29 +0200
commitcc61af1e2c933f2178a5dc3e5a5599e74d380eb3 (patch)
tree80e034aeb4f4511f7ddb3cc990fb6eb942a657ab /src/monitor-cmd.cc
parente3f7ecc6bdf7bbd1ae7ec10c387e15743842db90 (diff)
Add duration to packages and tpp format
Diffstat (limited to 'src/monitor-cmd.cc')
-rw-r--r--src/monitor-cmd.cc19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/monitor-cmd.cc b/src/monitor-cmd.cc
index 580f45f..eb7245d 100644
--- a/src/monitor-cmd.cc
+++ b/src/monitor-cmd.cc
@@ -63,27 +63,28 @@ public:
}
void package_data(Monitor*, uint32_t id,
- char const* data, size_t size, bool last) override {
+ char const* data, size_t size, bool last,
+ struct timespec timestamp) override {
auto it = packages_.find(id);
if (it == packages_.end()) {
assert(false);
return;
}
if (interleave_) {
- print_package(it->second, last, data, size);
+ print_package(it->second, last, data, size, timestamp);
if (last) packages_.erase(it);
return;
}
auto buf = data_.find(id);
if (last) {
if (buf == data_.end()) {
- print_package(it->second, true, data, size);
+ print_package(it->second, true, data, size, timestamp);
} else {
buf->second->write(data, size);
size_t avail;
auto ptr = buf->second->read_ptr(&avail);
print_package(it->second, true,
- reinterpret_cast<char const*>(ptr), avail);
+ reinterpret_cast<char const*>(ptr), avail, timestamp);
data_.erase(buf);
}
packages_.erase(it);
@@ -97,17 +98,19 @@ public:
}
private:
- void print_package(Package& pkg, bool last, char const* data, size_t size) {
+ void print_package(Package& pkg, bool last, char const* data, size_t size,
+ struct timespec timestamp) {
if (size == 0 && !last) return;
if (writer_) {
assert(last);
- writer_->write(pkg, data, size);
+ writer_->write(pkg, data, size, timestamp);
return;
}
{
ios_save save(out_);
- out_ << "*** " << pkg.timestamp.tv_sec << '.'
- << std::setfill('0') << std::setw(9) << pkg.timestamp.tv_nsec
+ auto ts = interleave_ ? timestamp : pkg.timestamp;
+ out_ << "*** " << ts.tv_sec << '.'
+ << std::setfill('0') << std::setw(9) << ts.tv_nsec
<< '\n';
}
out_ << "* Source: " << pkg.source_host << ':' << pkg.source_port << '\n'