Send monotonic send time in web messages
The monotonic send time seems particularly helpful to have on the
webpage. At some point, we may just want to wrap everything in a logfile
MessageHeader before sending it over, but that seemed unnecessary for
the time being.
Change-Id: I1811771a56d6375eb69d8cae81ab07020ac6001b
diff --git a/aos/network/web_proxy.fbs b/aos/network/web_proxy.fbs
index d5e027e..196d38c 100644
--- a/aos/network/web_proxy.fbs
+++ b/aos/network/web_proxy.fbs
@@ -57,4 +57,7 @@
queue_index:uint;
data:[ubyte];
+
+ // Time at which the message was sent, in nanoseconds.
+ monotonic_sent_time:long;
}
diff --git a/aos/network/web_proxy_utils.cc b/aos/network/web_proxy_utils.cc
index 21550f8..deb4a38 100644
--- a/aos/network/web_proxy_utils.cc
+++ b/aos/network/web_proxy_utils.cc
@@ -53,6 +53,8 @@
message_header_builder.add_packet_index(packet_index);
message_header_builder.add_data(data_offset);
message_header_builder.add_length(context.size);
+ message_header_builder.add_monotonic_sent_time(
+ context.monotonic_event_time.time_since_epoch().count());
return message_header_builder.Finish();
}
diff --git a/aos/network/www/proxy.ts b/aos/network/www/proxy.ts
index 7491ad5..4ba7e39 100644
--- a/aos/network/www/proxy.ts
+++ b/aos/network/www/proxy.ts
@@ -9,7 +9,8 @@
private dataBuffer: Uint8Array|null = null;
private receivedMessageLength: number = 0;
constructor(
- private readonly handlerFunc: (data: Uint8Array) => void,
+ private readonly handlerFunc:
+ (data: Uint8Array, sentTime: number) => void,
private readonly channel: RTCPeerConnection) {
channel.addEventListener('message', (e) => this.handleMessage(e));
}
@@ -18,9 +19,10 @@
const fbBuffer = new flatbuffers.ByteBuffer(new Uint8Array(e.data));
const messageHeader =
WebProxy.MessageHeader.getRootAsMessageHeader(fbBuffer);
+ const time = messageHeader.monotonicSentTime().toFloat64() * 1e-9;
// Short circuit if only one packet
if (messageHeader.packetCount() === 1) {
- this.handlerFunc(messageHeader.dataArray());
+ this.handlerFunc(messageHeader.dataArray(), time);
return;
}
@@ -37,7 +39,7 @@
this.receivedMessageLength += messageHeader.dataLength();
if (messageHeader.packetIndex() === messageHeader.packetCount() - 1) {
- this.handlerFunc(this.dataBuffer);
+ this.handlerFunc(this.dataBuffer, time);
}
}
}
@@ -54,7 +56,8 @@
// A set of functions that accept the config to handle.
private readonly configHandlers = new Set<(config: Configuration) => void>();
- private readonly handlerFuncs = new Map<string, (data: Uint8Array) => void>();
+ private readonly handlerFuncs =
+ new Map<string, (data: Uint8Array, sentTime: number) => void>();
private readonly handlers = new Set<Handler>();
constructor() {