diff options
author | Aaron O'Mullan <aaron.omullan@gmail.com> | 2021-04-25 19:23:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-25 19:23:22 +0200 |
commit | 1c7164257d146c279b61708ddf8514d85b5fc11c (patch) | |
tree | 515e2ac1e5d8c66d8e46aa14a51896a551d0d794 /core | |
parent | c130cbb7b77f81680686e10e83b7d7dda9f5cf6b (diff) |
refactor(core): move builtin ops to their own file (#10336)
Diffstat (limited to 'core')
-rw-r--r-- | core/lib.rs | 5 | ||||
-rw-r--r-- | core/ops.rs | 37 | ||||
-rw-r--r-- | core/ops_builtin.rs | 45 |
3 files changed, 48 insertions, 39 deletions
diff --git a/core/lib.rs b/core/lib.rs index b49de3b7b..9b4ba230b 100644 --- a/core/lib.rs +++ b/core/lib.rs @@ -9,6 +9,7 @@ mod module_specifier; mod modules; mod normalize_path; mod ops; +mod ops_builtin; mod ops_json; pub mod plugin_api; mod resources; @@ -52,8 +53,6 @@ pub use crate::modules::ModuleSourceFuture; pub use crate::modules::NoopModuleLoader; pub use crate::modules::RecursiveModuleLoad; pub use crate::normalize_path::normalize_path; -pub use crate::ops::op_close; -pub use crate::ops::op_resources; pub use crate::ops::serialize_op_result; pub use crate::ops::Op; pub use crate::ops::OpAsyncFuture; @@ -64,6 +63,8 @@ pub use crate::ops::OpResponse; pub use crate::ops::OpState; pub use crate::ops::OpTable; pub use crate::ops::PromiseId; +pub use crate::ops_builtin::op_close; +pub use crate::ops_builtin::op_resources; pub use crate::ops_json::op_async; pub use crate::ops_json::op_sync; pub use crate::resources::Resource; diff --git a/core/ops.rs b/core/ops.rs index ab6938a17..6faffba4b 100644 --- a/core/ops.rs +++ b/core/ops.rs @@ -1,10 +1,8 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. -use crate::error::bad_resource_id; use crate::error::type_error; use crate::error::AnyError; use crate::gotham_state::GothamState; -use crate::resources::ResourceId; use crate::resources::ResourceTable; use crate::runtime::GetErrorClassFn; use crate::ZeroCopyBuf; @@ -195,41 +193,6 @@ impl Default for OpTable { } } -/// Return map of resources with id as key -/// and string representation as value. -/// -/// This op must be wrapped in `op_sync`. -pub fn op_resources( - state: &mut OpState, - _args: (), - _zero_copy: Option<ZeroCopyBuf>, -) -> Result<Vec<(ResourceId, String)>, AnyError> { - let serialized_resources = state - .resource_table - .names() - .map(|(rid, name)| (rid, name.to_string())) - .collect(); - Ok(serialized_resources) -} - -/// Remove a resource from the resource table. -/// -/// This op must be wrapped in `op_sync`. -pub fn op_close( - state: &mut OpState, - rid: Option<ResourceId>, - _zero_copy: Option<ZeroCopyBuf>, -) -> Result<(), AnyError> { - // TODO(@AaronO): drop Option after improving type-strictness balance in serde_v8 - let rid = rid.ok_or_else(|| type_error("missing or invalid `rid`"))?; - state - .resource_table - .close(rid) - .ok_or_else(bad_resource_id)?; - - Ok(()) -} - #[cfg(test)] mod tests { use super::*; diff --git a/core/ops_builtin.rs b/core/ops_builtin.rs new file mode 100644 index 000000000..5c74c7330 --- /dev/null +++ b/core/ops_builtin.rs @@ -0,0 +1,45 @@ +use crate::error::bad_resource_id; +use crate::error::type_error; +use crate::error::AnyError; +use crate::resources::ResourceId; +use crate::OpState; +use crate::ZeroCopyBuf; + +// TODO(@AaronO): provide these ops grouped as a runtime extension +// e.g: +// pub fn init_builtins() -> Extension { ... } + +/// Return map of resources with id as key +/// and string representation as value. +/// +/// This op must be wrapped in `op_sync`. +pub fn op_resources( + state: &mut OpState, + _args: (), + _zero_copy: Option<ZeroCopyBuf>, +) -> Result<Vec<(ResourceId, String)>, AnyError> { + let serialized_resources = state + .resource_table + .names() + .map(|(rid, name)| (rid, name.to_string())) + .collect(); + Ok(serialized_resources) +} + +/// Remove a resource from the resource table. +/// +/// This op must be wrapped in `op_sync`. +pub fn op_close( + state: &mut OpState, + rid: Option<ResourceId>, + _zero_copy: Option<ZeroCopyBuf>, +) -> Result<(), AnyError> { + // TODO(@AaronO): drop Option after improving type-strictness balance in serde_v8 + let rid = rid.ok_or_else(|| type_error("missing or invalid `rid`"))?; + state + .resource_table + .close(rid) + .ok_or_else(bad_resource_id)?; + + Ok(()) +} |