summaryrefslogtreecommitdiff
path: root/src/ops.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/ops.rs')
-rw-r--r--src/ops.rs23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/ops.rs b/src/ops.rs
index a415d7100..c8a005601 100644
--- a/src/ops.rs
+++ b/src/ops.rs
@@ -126,6 +126,7 @@ pub fn dispatch(
msg::Any::WriteFile => op_write_file,
msg::Any::Now => op_now,
msg::Any::IsTTY => op_is_tty,
+ msg::Any::Seek => op_seek,
_ => panic!(format!(
"Unhandled message {}",
msg::enum_name_any(inner_type)
@@ -868,6 +869,28 @@ fn op_write(
}
}
+fn op_seek(
+ _state: &Arc<IsolateState>,
+ base: &msg::Base<'_>,
+ data: libdeno::deno_buf,
+) -> Box<Op> {
+ assert_eq!(data.len(), 0);
+ let _cmd_id = base.cmd_id();
+ let inner = base.inner_as_seek().unwrap();
+ let rid = inner.rid();
+ let offset = inner.offset();
+ let whence = inner.whence();
+
+ match resources::lookup(rid) {
+ None => odd_future(errors::bad_resource()),
+ Some(resource) => {
+ let op = resources::seek(resource, offset, whence)
+ .and_then(move |_| Ok(empty_buf()));
+ Box::new(op)
+ }
+ }
+}
+
fn op_remove(
state: &Arc<IsolateState>,
base: &msg::Base<'_>,