diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2018-10-05 19:21:15 +0200 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-10-11 15:45:51 -0400 |
commit | 51f9331ecb50afeafd0fa2ca8336e75aa374465e (patch) | |
tree | 7f3c76670760feea91d5fb260037a1d80c94d5a0 /js/metrics.ts | |
parent | 951e5def9856ee15be52c153a1d2cb7dd73f0da8 (diff) |
Add deno.metrics()
Diffstat (limited to 'js/metrics.ts')
-rw-r--r-- | js/metrics.ts | 39 |
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() + }; +} |