summaryrefslogtreecommitdiff
path: root/src/monitor-cmd.cc
diff options
context:
space:
mode:
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'