[][src]Struct deno_core::CoreIsolate

pub struct CoreIsolate {
    pub v8_isolate: Option<OwnedIsolate>,
    pub resource_table: Rc<RefCell<ResourceTable>>,
    pub global_context: Global<Context>,
    pub op_registry: OpRegistry,
    // some fields omitted
}

A single execution context of JavaScript. Corresponds roughly to the "Web Worker" concept in the DOM. An CoreIsolate is a Future that can be used with Tokio. The CoreIsolate future completes when there is an error or when all pending ops have completed.

Ops are created in JavaScript by calling Deno.core.dispatch(), and in Rust by implementing dispatcher function that takes control buffer and optional zero copy buffer as arguments. An async Op corresponds exactly to a Promise in JavaScript.

Fields

v8_isolate: Option<OwnedIsolate>resource_table: Rc<RefCell<ResourceTable>>global_context: Global<Context>op_registry: OpRegistry

Implementations

impl CoreIsolate[src]

pub fn new(startup_data: StartupData, will_snapshot: bool) -> Box<Self>[src]

startup_data defines the snapshot or script used at startup to initialize the isolate.

pub fn register_op<F>(&mut self, name: &str, op: F) -> OpId where
    F: Fn(&mut CoreIsolate, &[u8], Option<ZeroCopyBuf>) -> Op + 'static, 
[src]

Defines the how Deno.core.dispatch() acts. Called whenever Deno.core.dispatch() is called in JavaScript. zero_copy_buf corresponds to the second argument of Deno.core.dispatch().

Requires runtime to explicitly ask for op ids before using any of the ops.

pub fn set_js_error_create_fn(
    &mut self,
    f: impl Fn(JSError) -> ErrBox + 'static
)
[src]

Allows a callback to be set whenever a V8 exception is made. This allows the caller to wrap the JSError into an error. By default this callback is set to JSError::create.

pub fn dispatch_op<'s>(
    &mut self,
    scope: &mut impl ToLocal<'s>,
    op_id: OpId,
    control_buf: &[u8],
    zero_copy_buf: Option<ZeroCopyBuf>
) -> Option<(OpId, Box<[u8]>)>
[src]

pub fn execute(
    &mut self,
    js_filename: &str,
    js_source: &str
) -> Result<(), ErrBox>
[src]

Executes traditional JavaScript code (traditional = not ES modules)

ErrBox can be downcast to a type that exposes additional information about the V8 exception. By default this type is JSError, however it may be a different type if CoreIsolate::set_js_error_create_fn() has been used.

pub fn snapshot(&mut self) -> StartupData[src]

Takes a snapshot. The isolate should have been created with will_snapshot set to true.

ErrBox can be downcast to a type that exposes additional information about the V8 exception. By default this type is JSError, however it may be a different type if CoreIsolate::set_js_error_create_fn() has been used.

Trait Implementations

impl Drop for CoreIsolate[src]

impl Future for CoreIsolate[src]

type Output = Result<(), ErrBox>

The type of value produced on completion.

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Downcast for T where
    T: Any
[src]

impl<T> From<T> for T[src]

impl<T> FutureExt for T where
    T: Future + ?Sized
[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<F, T, E> TryFuture for F where
    F: Future<Output = Result<T, E>> + ?Sized
[src]

type Ok = T

The type of successful values yielded by this future

type Error = E

The type of failures yielded by this future

impl<Fut> TryFutureExt for Fut where
    Fut: TryFuture + ?Sized
[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.