summaryrefslogtreecommitdiff
path: root/js/metrics.ts
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-08-24 13:20:48 -0700
committerGitHub <noreply@github.com>2019-08-24 13:20:48 -0700
commit2235dd795d3cc6c24ff1bdd1bbdcd110b4b0bdfc (patch)
treea5811adc062cbb1c66f05c863c9be245cf4fd2d2 /js/metrics.ts
parentbdc0a13261deaa3748f51d9948b4e7b92864c324 (diff)
Revert json ops (#2814)
* Revert "port more ops to JSON (#2809)" This reverts commit 137f33733d365026903d40e7cde6e34ac6c36dcf. * Revert "port ops to JSON: compiler, errors, fetch, files (#2804)" This reverts commit 79f82cf10ed1dbf91346994250d7311a4d74377a. * Revert "Port rest of os ops to JSON (#2802)" This reverts commit 5b2baa5c990fbeae747e952c5dcd7a5369e950b1.
Diffstat (limited to 'js/metrics.ts')
-rw-r--r--js/metrics.ts27
1 files changed, 24 insertions, 3 deletions
diff --git a/js/metrics.ts b/js/metrics.ts
index 48e3102e5..e93e9528c 100644
--- a/js/metrics.ts
+++ b/js/metrics.ts
@@ -1,6 +1,6 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
-import * as dispatch from "./dispatch";
-import { sendSync } from "./dispatch_json";
+import { assert } from "./util";
+import { sendSync, msg, flatbuffers } from "./dispatch_flatbuffers";
export interface Metrics {
opsDispatched: number;
@@ -10,6 +10,27 @@ export interface Metrics {
bytesReceived: number;
}
+function req(): [flatbuffers.Builder, msg.Any, flatbuffers.Offset] {
+ const builder = flatbuffers.createBuilder();
+ const inner = msg.Metrics.createMetrics(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()
+ };
+}
+
/** Receive metrics from the privileged side of Deno.
*
* > console.table(Deno.metrics())
@@ -24,5 +45,5 @@ export interface Metrics {
* └──────────────────┴────────┘
*/
export function metrics(): Metrics {
- return sendSync(dispatch.OP_METRICS);
+ return res(sendSync(...req()));
}