[][src]Struct deno_core::CoreIsolate

pub struct CoreIsolate { /* 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.

Implementations

impl CoreIsolate[src]

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

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

pub fn with_heap_limits(
    startup_data: StartupData<'_>,
    heap_limits: HeapLimits
) -> Self
[src]

This is useful for controlling memory usage of scripts.

See HeapLimits for more details.

Make sure to use add_near_heap_limit_callback to prevent v8 from crashing when reaching the upper limit.

pub fn state(isolate: &Isolate) -> Rc<RefCell<CoreIsolateState>>[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.

pub fn register_op<F>(&mut self, name: &str, op: F) -> OpId where
    F: Fn(&mut CoreIsolateState, &mut [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 register_op_json_sync<F>(&mut self, name: &str, op: F) -> OpId where
    F: 'static + Fn(&mut CoreIsolateState, Value, &mut [ZeroCopyBuf]) -> Result<Value, ErrBox>, 
[src]

pub fn register_op_json_async<F, Fut>(&mut self, name: &str, op: F) -> OpId where
    Fut: 'static + Future<Output = Result<Value, ErrBox>>,
    F: 'static + Fn(&mut CoreIsolateState, Value, &mut [ZeroCopyBuf]) -> Fut, 
[src]

pub fn add_near_heap_limit_callback<C>(&mut self, cb: C) where
    C: FnMut(usize, usize) -> usize + 'static, 
[src]

Registers a callback on the isolate when the memory limits are approached. Use this to prevent V8 from crashing the process when reaching the limit.

Calls the closure with the current heap limit and the initial heap limit. The return value of the closure is set as the new limit.

pub fn remove_near_heap_limit_callback(&mut self, heap_limit: usize)[src]

Trait Implementations

impl Deref for CoreIsolate[src]

type Target = Isolate

The resulting type after dereferencing.

impl DerefMut for CoreIsolate[src]

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.