diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-02-11 10:04:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-11 10:04:59 +0100 |
commit | 79b3bc05d6de520f1df73face1744ae3d8be0bb8 (patch) | |
tree | f4c449efa67b88c767df52dd3ecec2246dded2e5 /cli/state.rs | |
parent | 81905a867ea3f942619229e330840d132c57a5da (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.rs | 10 |
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; |