diff options
Diffstat (limited to 'src/monitor-cmd.cc')
| -rw-r--r-- | src/monitor-cmd.cc | 19 |
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' |
