summaryrefslogtreecommitdiff
path: root/cli/js/ops/runtime.ts
blob: 7538ce12f78eef21f4897018eb47b8ec5bf4795d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.

import { sendSync } from "./dispatch_json.ts";

// TODO(bartlomieju): these two types are duplicated
// in `cli/js/build.ts` - deduplicate
export type OperatingSystem = "mac" | "win" | "linux";
export type Arch = "x64" | "arm64";

export interface Start {
  cwd: string;
  pid: number;
  args: string[];
  location: string; // Absolute URL.
  repl: boolean;
  debugFlag: boolean;
  depsFlag: boolean;
  typesFlag: boolean;
  versionFlag: boolean;
  denoVersion: string;
  v8Version: string;
  tsVersion: string;
  noColor: boolean;
  os: OperatingSystem;
  arch: Arch;
}

export function start(): Start {
  return sendSync("op_start");
}

export interface Metrics {
  opsDispatched: number;
  opsDispatchedSync: number;
  opsDispatchedAsync: number;
  opsDispatchedAsyncUnref: number;
  opsCompleted: number;
  opsCompletedSync: number;
  opsCompletedAsync: number;
  opsCompletedAsyncUnref: number;
  bytesSentControl: number;
  bytesSentData: number;
  bytesReceived: number;
}

/** Receive metrics from the privileged side of Deno.
 *
 *      > console.table(Deno.metrics())
 *      ┌─────────────────────────┬────────┐
 *      │         (index)         │ Values │
 *      ├─────────────────────────┼────────┤
 *      │      opsDispatched      │   3    │
 *      │    opsDispatchedSync    │   2    │
 *      │   opsDispatchedAsync    │   1    │
 *      │ opsDispatchedAsyncUnref │   0    │
 *      │      opsCompleted       │   3    │
 *      │    opsCompletedSync     │   2    │
 *      │    opsCompletedAsync    │   1    │
 *      │ opsCompletedAsyncUnref  │   0    │
 *      │    bytesSentControl     │   73   │
 *      │      bytesSentData      │   0    │
 *      │      bytesReceived      │  375   │
 *      └─────────────────────────┴────────┘
 */
export function metrics(): Metrics {
  return sendSync("op_metrics");
}