Skip to content

Commit d91012a

Browse files
committed
add a new example for proxy.
1 parent 0c35f28 commit d91012a

File tree

4 files changed

+40
-2
lines changed

4 files changed

+40
-2
lines changed

Cargo.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,7 @@ hex = "0.3.2"
2222
[[example]]
2323
name = "echo"
2424
path = "examples/echo/main.rs"
25+
26+
[[example]]
27+
name = "proxy"
28+
path = "examples/proxy/main.rs"

examples/proxy/main.rs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#[macro_use]
2+
extern crate log;
3+
extern crate rsocket_rust;
4+
extern crate tokio;
5+
6+
use rsocket_rust::prelude::*;
7+
8+
fn main() {
9+
env_logger::builder()
10+
.default_format_timestamp_nanos(true)
11+
.init();
12+
let server = RSocketFactory::receive()
13+
.acceptor(|setup, _sending_socket| {
14+
info!("incoming socket: setup={:?}", setup);
15+
proxied(URI::Tcp("127.0.0.1:7878"))
16+
})
17+
.transport(URI::Tcp("127.0.0.1:7979"))
18+
.serve();
19+
tokio::run(server);
20+
}
21+
22+
fn proxied(target: URI) -> Box<dyn RSocket> {
23+
Box::new(
24+
RSocketFactory::connect()
25+
.acceptor(|| Box::new(MockResponder))
26+
.setup(Payload::from("I'm Rust!"))
27+
.transport(target)
28+
.start()
29+
.unwrap(),
30+
)
31+
}

src/transport/tcp.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ use futures::sync::mpsc;
77
use futures::{lazy, Future, Sink, Stream};
88
use std::io;
99
use std::net::SocketAddr;
10+
use std::net::TcpStream as StdTcpStream;
1011
use tokio::codec::Framed;
1112
use tokio::net::TcpStream;
13+
use tokio::reactor::Handle;
1214

1315
pub fn from_addr(addr: &SocketAddr) -> Context {
14-
let socket = TcpStream::connect(addr).wait().unwrap();
16+
let origin = StdTcpStream::connect(addr).unwrap();
17+
let socket = TcpStream::from_std(origin, &Handle::default()).unwrap();
18+
// let socket = TcpStream::connect(addr).wait().unwrap();
1519
from_socket(socket)
1620
}
1721

tests/client_test.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ fn test_client() {
1313
.mime_type("text/plain", "text/plain")
1414
.start()
1515
.unwrap();
16-
1716
for n in 0..11 {
1817
let pa = Payload::builder()
1918
.set_data_utf8("Hello World!")

0 commit comments

Comments
 (0)