summaryrefslogtreecommitdiff
path: root/core/examples/http_bench.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-10-29 01:42:44 +0100
committerRy Dahl <ry@tinyclouds.org>2019-10-28 20:42:44 -0400
commita7992e77037353ee4c7d3d480dcbd907961087bd (patch)
tree3d2750c76c29f69742c39c62f3fb2bc1fc0a1734 /core/examples/http_bench.rs
parent2f0f236d5656fa2d89a8e1571d03c4bda5f10d38 (diff)
refactor: use core ResourceTable in cli (#3206)
Diffstat (limited to 'core/examples/http_bench.rs')
-rw-r--r--core/examples/http_bench.rs29
1 files changed, 22 insertions, 7 deletions
diff --git a/core/examples/http_bench.rs b/core/examples/http_bench.rs
index a6cc6d548..764e04303 100644
--- a/core/examples/http_bench.rs
+++ b/core/examples/http_bench.rs
@@ -15,6 +15,8 @@ extern crate lazy_static;
use deno::*;
use futures::future::lazy;
use std::env;
+use std::io::Error;
+use std::io::ErrorKind;
use std::net::SocketAddr;
use std::sync::Mutex;
use std::sync::MutexGuard;
@@ -182,13 +184,25 @@ fn main() {
}
}
+pub fn bad_resource() -> Error {
+ Error::new(ErrorKind::NotFound, "bad resource id")
+}
+
struct TcpListener(tokio::net::TcpListener);
-impl Resource for TcpListener {}
+impl Resource for TcpListener {
+ fn inspect_repr(&self) -> &str {
+ "tcpListener"
+ }
+}
struct TcpStream(tokio::net::TcpStream);
-impl Resource for TcpStream {}
+impl Resource for TcpStream {
+ fn inspect_repr(&self) -> &str {
+ "tcpStream"
+ }
+}
lazy_static! {
static ref RESOURCE_TABLE: Mutex<ResourceTable> =
@@ -204,7 +218,8 @@ fn op_accept(record: Record, _zero_copy_buf: Option<PinnedBuf>) -> Box<HttpOp> {
debug!("accept {}", rid);
let fut = futures::future::poll_fn(move || {
let mut table = lock_resource_table();
- let listener = table.get_mut::<TcpListener>(rid)?;
+ let listener =
+ table.get_mut::<TcpListener>(rid).ok_or_else(bad_resource)?;
listener.0.poll_accept()
})
.and_then(move |(stream, addr)| {
@@ -233,8 +248,8 @@ fn op_close(record: Record, _zero_copy_buf: Option<PinnedBuf>) -> Box<HttpOp> {
let rid = record.arg as u32;
let mut table = lock_resource_table();
let fut = match table.close(rid) {
- Ok(_) => futures::future::ok(0),
- Err(e) => futures::future::err(e),
+ Some(_) => futures::future::ok(0),
+ None => futures::future::err(bad_resource()),
};
Box::new(fut)
}
@@ -245,7 +260,7 @@ fn op_read(record: Record, zero_copy_buf: Option<PinnedBuf>) -> Box<HttpOp> {
let mut zero_copy_buf = zero_copy_buf.unwrap();
let fut = futures::future::poll_fn(move || {
let mut table = lock_resource_table();
- let stream = table.get_mut::<TcpStream>(rid)?;
+ let stream = table.get_mut::<TcpStream>(rid).ok_or_else(bad_resource)?;
stream.0.poll_read(&mut zero_copy_buf)
})
.and_then(move |nread| {
@@ -261,7 +276,7 @@ fn op_write(record: Record, zero_copy_buf: Option<PinnedBuf>) -> Box<HttpOp> {
let zero_copy_buf = zero_copy_buf.unwrap();
let fut = futures::future::poll_fn(move || {
let mut table = lock_resource_table();
- let stream = table.get_mut::<TcpStream>(rid)?;
+ let stream = table.get_mut::<TcpStream>(rid).ok_or_else(bad_resource)?;
stream.0.poll_write(&zero_copy_buf)
})
.and_then(move |nwritten| {