diff options
Diffstat (limited to 'runtime/worker_bootstrap.rs')
-rw-r--r-- | runtime/worker_bootstrap.rs | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/runtime/worker_bootstrap.rs b/runtime/worker_bootstrap.rs index b13c3c428..afd3242e8 100644 --- a/runtime/worker_bootstrap.rs +++ b/runtime/worker_bootstrap.rs @@ -10,7 +10,6 @@ use deno_terminal::colors; /// The execution mode for this worker. Some modes may have implicit behaviour. #[derive(Copy, Clone)] -#[repr(u8)] pub enum WorkerExecutionMode { /// No special behaviour. None, @@ -28,11 +27,39 @@ pub enum WorkerExecutionMode { /// `deno bench` Bench, /// `deno serve` - Serve, + Serve { + is_main: bool, + worker_count: Option<usize>, + }, /// `deno jupyter` Jupyter, } +impl WorkerExecutionMode { + pub fn discriminant(&self) -> u8 { + match self { + WorkerExecutionMode::None => 0, + WorkerExecutionMode::Worker => 1, + WorkerExecutionMode::Run => 2, + WorkerExecutionMode::Repl => 3, + WorkerExecutionMode::Eval => 4, + WorkerExecutionMode::Test => 5, + WorkerExecutionMode::Bench => 6, + WorkerExecutionMode::Serve { .. } => 7, + WorkerExecutionMode::Jupyter => 8, + } + } + pub fn serve_info(&self) -> (Option<bool>, Option<usize>) { + match *self { + WorkerExecutionMode::Serve { + is_main, + worker_count, + } => (Some(is_main), worker_count), + _ => (None, None), + } + } +} + /// The log level to use when printing diagnostic log messages, warnings, /// or errors in the worker. /// @@ -175,6 +202,10 @@ struct BootstrapV8<'a>( u16, // serve host Option<&'a str>, + // serve is main + Option<bool>, + // serve worker count + Option<usize>, ); impl BootstrapOptions { @@ -186,6 +217,7 @@ impl BootstrapOptions { let scope = RefCell::new(scope); let ser = deno_core::serde_v8::Serializer::new(&scope); + let (serve_is_main, serve_worker_count) = self.mode.serve_info(); let bootstrap = BootstrapV8( self.location.as_ref().map(|l| l.as_str()), self.unstable, @@ -198,9 +230,11 @@ impl BootstrapOptions { self.disable_deprecated_api_warning, self.verbose_deprecated_api_warning, self.future, - self.mode as u8 as _, + self.mode.discriminant() as _, self.serve_port.unwrap_or_default(), self.serve_host.as_deref(), + serve_is_main, + serve_worker_count, ); bootstrap.serialize(ser).unwrap() |