summaryrefslogtreecommitdiff
path: root/src/proxy.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/proxy.cc')
-rw-r--r--src/proxy.cc17
1 files changed, 11 insertions, 6 deletions
diff --git a/src/proxy.cc b/src/proxy.cc
index b1e5940..b8df00c 100644
--- a/src/proxy.cc
+++ b/src/proxy.cc
@@ -1929,30 +1929,35 @@ void ProxyImpl::send_attached_data(uint32_t id, void const* ptr, size_t size,
}
if (attached_.empty()) return;
if (size == 0 && !last) return;
- uint8_t data[10];
+ uint8_t data[22];
data[0] = 'D';
data[1] = 'A';
data[2] = 'T';
write_u32(data + 5, id);
+ auto dur = looper_->now().time_since_epoch();
+ auto sec = std::chrono::duration_cast<std::chrono::seconds>(dur);
+ write_u64(data + 10, sec.count());
+ write_u32(data + 18, std::chrono::duration_cast<std::chrono::nanoseconds>(
+ dur - sec).count());
if (size == 0) {
assert(last);
assert(ptr == nullptr);
write_u16(data + 3, 10);
data[9] = 0;
- send_attached(data, 10, nullptr, 0);
+ send_attached(data, 22, nullptr, 0);
} else {
- size_t max = 0xffff - 10;
+ size_t max = 0xffff - 22;
auto p = reinterpret_cast<char const*>(ptr);
data[9] = 1;
while (size > max) {
write_u16(data + 3, 0xffff);
- send_attached(data, 10, p, max);
+ send_attached(data, 22, p, max);
p += max;
size -= max;
}
data[9] = last ? 0 : 1;
- write_u16(data + 3, size + 10);
- send_attached(data, 10, p, size);
+ write_u16(data + 3, size + 22);
+ send_attached(data, 22, p, size);
}
}