summaryrefslogtreecommitdiff
path: root/cli/state.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-02-11 10:04:59 +0100
committerGitHub <noreply@github.com>2020-02-11 10:04:59 +0100
commit79b3bc05d6de520f1df73face1744ae3d8be0bb8 (patch)
treef4c449efa67b88c767df52dd3ecec2246dded2e5 /cli/state.rs
parent81905a867ea3f942619229e330840d132c57a5da (diff)
workers: basic event loop (#3828)
* establish basic event loop for workers * make "self.close()" inside worker * remove "runWorkerMessageLoop() - instead manually call global function in Rust when message arrives. This is done in preparation for structured clone * refactor "WorkerChannel" and use distinct structs for internal and external channels; "WorkerChannelsInternal" and "WorkerHandle" * move "State.worker_channels_internal" to "Worker.internal_channels" * add "WorkerEvent" enum for child->host communication; currently "Message(Buf)" and "Error(ErrBox)" variants are supported * add tests for nested workers * add tests for worker throwing error on startup
Diffstat (limited to 'cli/state.rs')
-rw-r--r--cli/state.rs10
1 files changed, 3 insertions, 7 deletions
diff --git a/cli/state.rs b/cli/state.rs
index 4e2f47e62..b9ef62053 100644
--- a/cli/state.rs
+++ b/cli/state.rs
@@ -8,8 +8,7 @@ use crate::metrics::Metrics;
use crate::ops::JsonOp;
use crate::ops::MinimalOp;
use crate::permissions::DenoPermissions;
-use crate::worker::WorkerChannelsExternal;
-use crate::worker::WorkerChannelsInternal;
+use crate::worker::WorkerHandle;
use deno_core::Buf;
use deno_core::CoreOp;
use deno_core::ErrBox;
@@ -55,8 +54,7 @@ pub struct StateInner {
pub import_map: Option<ImportMap>,
pub metrics: Metrics,
pub global_timer: GlobalTimer,
- pub workers: HashMap<u32, WorkerChannelsExternal>,
- pub worker_channels_internal: Option<WorkerChannelsInternal>,
+ pub workers: HashMap<u32, WorkerHandle>,
pub next_worker_id: AtomicUsize,
pub start_time: Instant,
pub seeded_rng: Option<StdRng>,
@@ -232,7 +230,6 @@ impl State {
import_map,
metrics: Metrics::default(),
global_timer: GlobalTimer::new(),
- worker_channels_internal: None,
workers: HashMap::new(),
next_worker_id: AtomicUsize::new(0),
start_time: Instant::now(),
@@ -269,7 +266,6 @@ impl State {
import_map: None,
metrics: Metrics::default(),
global_timer: GlobalTimer::new(),
- worker_channels_internal: None,
workers: HashMap::new(),
next_worker_id: AtomicUsize::new(0),
start_time: Instant::now(),
@@ -282,7 +278,7 @@ impl State {
Ok(Self(state))
}
- pub fn add_child_worker(&self, handle: WorkerChannelsExternal) -> u32 {
+ pub fn add_child_worker(&self, handle: WorkerHandle) -> u32 {
let mut inner_state = self.borrow_mut();
let worker_id =
inner_state.next_worker_id.fetch_add(1, Ordering::Relaxed) as u32;