summaryrefslogtreecommitdiff
path: root/cli/ops/workers.rs
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2019-10-11 11:41:54 -0700
committerGitHub <noreply@github.com>2019-10-11 11:41:54 -0700
commit97d8498d46bbfb7bb16eeb3a69565d2aeda1e5aa (patch)
treecfe85f3afccda5c0f87cbb29b79e0eab8d9c0d97 /cli/ops/workers.rs
parent04ed8d0531b7c2c308b28b742f5c332345d97065 (diff)
Add init methods for each op module (#3087)
Diffstat (limited to 'cli/ops/workers.rs')
-rw-r--r--cli/ops/workers.rs59
1 files changed, 53 insertions, 6 deletions
diff --git a/cli/ops/workers.rs b/cli/ops/workers.rs
index 6950f25d6..c8c4252c3 100644
--- a/cli/ops/workers.rs
+++ b/cli/ops/workers.rs
@@ -3,6 +3,7 @@ use super::dispatch_json::{Deserialize, JsonOp, Value};
use crate::deno_error::js_check;
use crate::deno_error::DenoError;
use crate::deno_error::ErrorKind;
+use crate::ops::json_op;
use crate::resources;
use crate::startup_data;
use crate::state::ThreadSafeState;
@@ -15,6 +16,36 @@ use futures::Sink;
use futures::Stream;
use std;
use std::convert::From;
+use std::sync::atomic::Ordering;
+
+pub fn init(i: &mut Isolate, s: &ThreadSafeState) {
+ i.register_op(
+ "create_worker",
+ s.core_op(json_op(s.stateful_op(op_create_worker))),
+ );
+ i.register_op(
+ "host_get_worker_closed",
+ s.core_op(json_op(s.stateful_op(op_host_get_worker_closed))),
+ );
+ i.register_op(
+ "host_post_message",
+ s.core_op(json_op(s.stateful_op(op_host_post_message))),
+ );
+ i.register_op(
+ "host_get_message",
+ s.core_op(json_op(s.stateful_op(op_host_get_message))),
+ );
+ // TODO: make sure these two ops are only accessible to appropriate Worker
+ i.register_op(
+ "worker_post_message",
+ s.core_op(json_op(s.stateful_op(op_worker_post_message))),
+ );
+ i.register_op(
+ "worker_get_message",
+ s.core_op(json_op(s.stateful_op(op_worker_get_message))),
+ );
+ i.register_op("metrics", s.core_op(json_op(s.stateful_op(op_metrics))));
+}
struct GetMessageFuture {
pub state: ThreadSafeState,
@@ -33,7 +64,7 @@ impl Future for GetMessageFuture {
}
/// Get message from host as guest worker
-pub fn op_worker_get_message(
+fn op_worker_get_message(
state: &ThreadSafeState,
_args: Value,
_data: Option<PinnedBuf>,
@@ -56,7 +87,7 @@ pub fn op_worker_get_message(
}
/// Post message to host as guest worker
-pub fn op_worker_post_message(
+fn op_worker_post_message(
state: &ThreadSafeState,
_args: Value,
data: Option<PinnedBuf>,
@@ -84,7 +115,7 @@ struct CreateWorkerArgs {
}
/// Create worker as the host
-pub fn op_create_worker(
+fn op_create_worker(
state: &ThreadSafeState,
args: Value,
_data: Option<PinnedBuf>,
@@ -154,7 +185,7 @@ struct HostGetWorkerClosedArgs {
}
/// Return when the worker closes
-pub fn op_host_get_worker_closed(
+fn op_host_get_worker_closed(
state: &ThreadSafeState,
args: Value,
_data: Option<PinnedBuf>,
@@ -183,7 +214,7 @@ struct HostGetMessageArgs {
}
/// Get message from guest worker as host
-pub fn op_host_get_message(
+fn op_host_get_message(
_state: &ThreadSafeState,
args: Value,
_data: Option<PinnedBuf>,
@@ -208,7 +239,7 @@ struct HostPostMessageArgs {
}
/// Post message to guest worker as host
-pub fn op_host_post_message(
+fn op_host_post_message(
_state: &ThreadSafeState,
args: Value,
data: Option<PinnedBuf>,
@@ -225,3 +256,19 @@ pub fn op_host_post_message(
Ok(JsonOp::Sync(json!({})))
}
+
+fn op_metrics(
+ state: &ThreadSafeState,
+ _args: Value,
+ _zero_copy: Option<PinnedBuf>,
+) -> Result<JsonOp, ErrBox> {
+ let m = &state.metrics;
+
+ Ok(JsonOp::Sync(json!({
+ "opsDispatched": m.ops_dispatched.load(Ordering::SeqCst) as u64,
+ "opsCompleted": m.ops_completed.load(Ordering::SeqCst) as u64,
+ "bytesSentControl": m.bytes_sent_control.load(Ordering::SeqCst) as u64,
+ "bytesSentData": m.bytes_sent_data.load(Ordering::SeqCst) as u64,
+ "bytesReceived": m.bytes_received.load(Ordering::SeqCst) as u64
+ })))
+}