summaryrefslogtreecommitdiff
path: root/cli/ops/net.rs
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2019-08-27 17:35:32 +0200
committerRyan Dahl <ry@tinyclouds.org>2019-08-27 11:35:32 -0400
commit20739a8111658c088e291503866110117e117792 (patch)
tree9147e731ffb014e32fa29656cd6d24417aba616d /cli/ops/net.rs
parentb6a4ec7d163810d52750f04ec2073b13f8943991 (diff)
feat: implement Addr interface (#2821)
Diffstat (limited to 'cli/ops/net.rs')
-rw-r--r--cli/ops/net.rs35
1 files changed, 27 insertions, 8 deletions
diff --git a/cli/ops/net.rs b/cli/ops/net.rs
index 650127fad..a9a62b148 100644
--- a/cli/ops/net.rs
+++ b/cli/ops/net.rs
@@ -32,11 +32,18 @@ pub fn op_accept(
None => Err(deno_error::bad_resource()),
Some(server_resource) => {
let op = tokio_util::accept(server_resource)
- .map_err(ErrBox::from)
.and_then(move |(tcp_stream, _socket_addr)| {
+ let local_addr = tcp_stream.local_addr()?;
+ let remote_addr = tcp_stream.peer_addr()?;
let tcp_stream_resource = resources::add_tcp_stream(tcp_stream);
+ Ok((tcp_stream_resource, local_addr, remote_addr))
+ })
+ .map_err(ErrBox::from)
+ .and_then(move |(tcp_stream_resource, local_addr, remote_addr)| {
futures::future::ok(json!({
- "rid": tcp_stream_resource.rid
+ "rid": tcp_stream_resource.rid,
+ "localAddr": local_addr.to_string(),
+ "remoteAddr": remote_addr.to_string(),
}))
});
@@ -64,14 +71,22 @@ pub fn op_dial(
state.check_net(&address)?;
let op = resolve_addr(&address).and_then(move |addr| {
- TcpStream::connect(&addr).map_err(ErrBox::from).and_then(
- move |tcp_stream| {
+ TcpStream::connect(&addr)
+ .map_err(ErrBox::from)
+ .and_then(move |tcp_stream| {
+ let local_addr = tcp_stream.local_addr()?;
+ let remote_addr = tcp_stream.peer_addr()?;
let tcp_stream_resource = resources::add_tcp_stream(tcp_stream);
+ Ok((tcp_stream_resource, local_addr, remote_addr))
+ })
+ .map_err(ErrBox::from)
+ .and_then(move |(tcp_stream_resource, local_addr, remote_addr)| {
futures::future::ok(json!({
- "rid": tcp_stream_resource.rid
+ "rid": tcp_stream_resource.rid,
+ "localAddr": local_addr.to_string(),
+ "remoteAddr": remote_addr.to_string(),
}))
- },
- )
+ })
});
Ok(JsonOp::Async(Box::new(op)))
@@ -129,7 +144,11 @@ pub fn op_listen(
let addr = resolve_addr(&address).wait()?;
let listener = TcpListener::bind(&addr)?;
+ let local_addr = listener.local_addr()?;
let resource = resources::add_tcp_listener(listener);
- Ok(JsonOp::Sync(json!(resource.rid)))
+ Ok(JsonOp::Sync(json!({
+ "rid": resource.rid,
+ "localAddr": local_addr.to_string()
+ })))
}