summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-10-01 19:43:27 -0400
committerRyan Dahl <ry@tinyclouds.org>2018-10-01 22:30:57 -0400
commitfc1c54dde052d6a967d5f185604b3f79b1ba2fbb (patch)
treecead81f509d56dd1e5a8407b92922af04ee7be88 /src
parent42c5b103ec0c0fc52b868b0824807c0ad358a2e3 (diff)
Adjust how handle_read handle_write function.
Use tokio_io::io::read() and tokio_io::io::write_all() instead of poll_fn() as suggested in the Tokio gitter.
Diffstat (limited to 'src')
-rw-r--r--src/handlers.rs98
1 files changed, 47 insertions, 51 deletions
diff --git a/src/handlers.rs b/src/handlers.rs
index db464f407..c27543d33 100644
--- a/src/handlers.rs
+++ b/src/handlers.rs
@@ -30,8 +30,7 @@ use std::time::UNIX_EPOCH;
use std::time::{Duration, Instant};
use tokio;
use tokio::timer::Delay;
-use tokio_io::AsyncRead;
-use tokio_io::AsyncWrite;
+use tokio_io;
use tokio_threadpool;
type OpResult = DenoResult<Buf>;
@@ -611,31 +610,29 @@ fn handle_read(
errors::ErrorKind::BadFileDescriptor,
String::from("Bad File Descriptor"),
)),
- Some(mut resource) => {
- let op = futures::future::poll_fn(move || {
- let poll = resource.poll_read(data);
- poll
- }).map_err(|err| DenoError::from(err))
- .and_then(move |nread: usize| {
- let builder = &mut FlatBufferBuilder::new();
- let msg = msg::ReadRes::create(
- builder,
- &msg::ReadResArgs {
- nread: nread as u32,
- eof: nread == 0,
- ..Default::default()
- },
- );
- Ok(serialize_response(
- cmd_id,
- builder,
- msg::BaseArgs {
- msg: Some(msg.as_union_value()),
- msg_type: msg::Any::ReadRes,
- ..Default::default()
- },
- ))
- });
+ Some(resource) => {
+ let op = tokio_io::io::read(resource, data)
+ .map_err(|err| DenoError::from(err))
+ .and_then(move |(_resource, _buf, nread)| {
+ let builder = &mut FlatBufferBuilder::new();
+ let msg = msg::ReadRes::create(
+ builder,
+ &msg::ReadResArgs {
+ nread: nread as u32,
+ eof: nread == 0,
+ ..Default::default()
+ },
+ );
+ Ok(serialize_response(
+ cmd_id,
+ builder,
+ msg::BaseArgs {
+ msg: Some(msg.as_union_value()),
+ msg_type: msg::Any::ReadRes,
+ ..Default::default()
+ },
+ ))
+ });
Box::new(op)
}
}
@@ -655,30 +652,29 @@ fn handle_write(
errors::ErrorKind::BadFileDescriptor,
String::from("Bad File Descriptor"),
)),
- Some(mut resource) => {
- let op = futures::future::poll_fn(move || {
- let poll = resource.poll_write(data);
- poll
- }).map_err(|err| DenoError::from(err))
- .and_then(move |bytes_written: usize| {
- let builder = &mut FlatBufferBuilder::new();
- let msg = msg::WriteRes::create(
- builder,
- &msg::WriteResArgs {
- nbyte: bytes_written as u32,
- ..Default::default()
- },
- );
- Ok(serialize_response(
- cmd_id,
- builder,
- msg::BaseArgs {
- msg: Some(msg.as_union_value()),
- msg_type: msg::Any::WriteRes,
- ..Default::default()
- },
- ))
- });
+ Some(resource) => {
+ let len = data.len();
+ let op = tokio_io::io::write_all(resource, data)
+ .map_err(|err| DenoError::from(err))
+ .and_then(move |(_resource, _buf)| {
+ let builder = &mut FlatBufferBuilder::new();
+ let msg = msg::WriteRes::create(
+ builder,
+ &msg::WriteResArgs {
+ nbyte: len as u32,
+ ..Default::default()
+ },
+ );
+ Ok(serialize_response(
+ cmd_id,
+ builder,
+ msg::BaseArgs {
+ msg: Some(msg.as_union_value()),
+ msg_type: msg::Any::WriteRes,
+ ..Default::default()
+ },
+ ))
+ });
Box::new(op)
}
}