summaryrefslogtreecommitdiff
path: root/js/metrics.ts
diff options
context:
space:
mode:
Diffstat (limited to 'js/metrics.ts')
-rw-r--r--js/metrics.ts39
1 files changed, 39 insertions, 0 deletions
diff --git a/js/metrics.ts b/js/metrics.ts
new file mode 100644
index 000000000..d76b781db
--- /dev/null
+++ b/js/metrics.ts
@@ -0,0 +1,39 @@
+// Copyright 2018 the Deno authors. All rights reserved. MIT license.
+import * as msg from "gen/msg_generated";
+import { flatbuffers } from "flatbuffers";
+import { assert } from "./util";
+import * as dispatch from "./dispatch";
+
+interface Metrics {
+ opsDispatched: number;
+ opsCompleted: number;
+ bytesSentControl: number;
+ bytesSentData: number;
+ bytesReceived: number;
+}
+
+export function metrics(): Metrics {
+ return res(dispatch.sendSync(...req()));
+}
+
+function req(): [flatbuffers.Builder, msg.Any, flatbuffers.Offset] {
+ const builder = new flatbuffers.Builder();
+ msg.Metrics.startMetrics(builder);
+ const inner = msg.Metrics.endMetrics(builder);
+ return [builder, msg.Any.Metrics, inner];
+}
+
+function res(baseRes: null | msg.Base): Metrics {
+ assert(baseRes !== null);
+ assert(msg.Any.MetricsRes === baseRes!.innerType());
+ const res = new msg.MetricsRes();
+ assert(baseRes!.inner(res) !== null);
+
+ return {
+ opsDispatched: res.opsDispatched().toFloat64(),
+ opsCompleted: res.opsCompleted().toFloat64(),
+ bytesSentControl: res.bytesSentControl().toFloat64(),
+ bytesSentData: res.bytesSentData().toFloat64(),
+ bytesReceived: res.bytesReceived().toFloat64()
+ };
+}