Skip to content

Commit b4154b3

Browse files
authored
Merge pull request #2 from rsocket/feature/async_await
Feature/async await
2 parents 8bd39b1 + 7ced3c6 commit b4154b3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1331
-1158
lines changed

Cargo.toml

+22-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "rsocket_rust"
3-
version = "0.1.5"
3+
version = "0.2.0"
44
authors = ["Jeffsky <[email protected]>"]
55
edition = "2018"
66
license = "Apache-2.0"
@@ -10,19 +10,32 @@ homepage = "https://github.com/rsocket/rsocket-rust"
1010
description = "rsocket-rust is an implementation of the RSocket protocol in Rust."
1111

1212
[dependencies]
13+
matches = "0.1.8"
1314
log = "0.4.8"
14-
bytes = "0.4.12"
15-
futures = "0.1.29"
16-
tokio = "0.1.22"
15+
bytes = "0.5.2"
16+
futures = "0.3.1"
17+
lazy_static = "1.4.0"
18+
# reactor_rs = {git = "https://github.com/jjeffcaii/reactor-rust", branch = "develop"}
19+
20+
[dependencies.tokio]
21+
version = "0.2.1"
22+
default-features = false
23+
features = ["full"]
24+
25+
[dependencies.tokio-util]
26+
version = "0.2.0"
27+
default-features = false
28+
features = ["codec"]
1729

1830
[dev-dependencies]
19-
env_logger = "0.6.2"
20-
hex = "0.3.2"
31+
env_logger = "0.7.1"
32+
hex = "0.4.0"
33+
rand = "0.7.2"
2134

2235
[[example]]
2336
name = "echo"
2437
path = "examples/echo/main.rs"
2538

26-
[[example]]
27-
name = "proxy"
28-
path = "examples/proxy/main.rs"
39+
# [[example]]
40+
# name = "proxy"
41+
# path = "examples/proxy/main.rs"

README.md

+38-47
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
[![License](https://img.shields.io/github/license/rsocket/rsocket-rust.svg)](https://github.com/rsocket/rsocket-rust/blob/master/LICENSE)
66
[![GitHub Release](https://img.shields.io/github/release-pre/rsocket/rsocket-rust.svg)](https://github.com/rsocket/rsocket-rust/releases)
77

8-
> rsocket-rust is an implementation of the RSocket protocol in Rust.
8+
> rsocket-rust is an implementation of the RSocket protocol in Rust(1.39+).
99
It's an **alpha** version and still under active development. **Do not use it in a production environment!**
1010

1111
## Example
@@ -15,66 +15,57 @@ It's an **alpha** version and still under active development. **Do not use it in
1515
### Server
1616

1717
```rust
18-
extern crate bytes;
19-
extern crate futures;
2018
extern crate rsocket_rust;
21-
22-
use bytes::Bytes;
23-
use futures::prelude::*;
19+
extern crate tokio;
20+
#[macro_use]
21+
extern crate log;
2422
use rsocket_rust::prelude::*;
25-
26-
#[test]
27-
fn test_serve() {
28-
RSocketFactory::receive()
29-
.transport(URI::Tcp("127.0.0.1:7878"))
30-
.acceptor(|setup, sending_socket| {
31-
println!("accept setup: {:?}", setup);
32-
// TODO: use tokio runtime?
33-
std::thread::spawn(move || {
34-
let resp = sending_socket
35-
.request_response(
36-
Payload::builder()
37-
.set_data(Bytes::from("Hello Client!"))
38-
.build(),
39-
)
40-
.wait()
41-
.unwrap();
42-
println!(">>>>> response success: {:?}", resp);
43-
});
44-
Box::new(MockResponder)
45-
})
46-
.serve()
47-
.wait()
48-
.unwrap();
23+
use std::env;
24+
use std::error::Error;
25+
26+
#[tokio::main]
27+
async fn main() -> Result<(), Box<dyn Error>> {
28+
env_logger::builder().init();
29+
let addr = env::args().nth(1).unwrap_or("127.0.0.1:7878".to_string());
30+
31+
RSocketFactory::receive()
32+
.transport(URI::Tcp(addr))
33+
.acceptor(|setup, _socket| {
34+
info!("accept setup: {:?}", setup);
35+
Box::new(EchoRSocket)
36+
})
37+
.serve()
38+
.await
4939
}
50-
5140
```
5241

5342
### Client
5443

5544
```rust
56-
extern crate futures;
5745
extern crate rsocket_rust;
5846

59-
use futures::prelude::*;
6047
use rsocket_rust::prelude::*;
6148

49+
#[tokio::main]
6250
#[test]
63-
fn test_client() {
64-
let cli = RSocketFactory::connect()
65-
.acceptor(||Box::new(MockResponder))
66-
.transport(URI::Tcp("127.0.0.1:7878"))
67-
.setup(Payload::from("READY!"))
68-
.mime_type("text/plain", "text/plain")
69-
.start()
70-
.unwrap();
71-
let pa = Payload::builder()
72-
.set_data_utf8("Hello World!")
73-
.set_metadata_utf8("Rust!")
74-
.build();
75-
let resp = cli.request_response(pa).wait().unwrap();
76-
println!("******* response: {:?}", resp);
51+
async fn test() {
52+
let cli = RSocketFactory::connect()
53+
.acceptor(|| Box::new(EchoRSocket))
54+
.transport(URI::Tcp("127.0.0.1:7878".to_string()))
55+
.setup(Payload::from("READY!"))
56+
.mime_type("text/plain", "text/plain")
57+
.start()
58+
.await
59+
.unwrap();
60+
let req = Payload::builder()
61+
.set_data_utf8("Hello World!")
62+
.set_metadata_utf8("Rust")
63+
.build();
64+
let res = cli.request_response(req).await.unwrap();
65+
println!("got: {:?}", res);
66+
cli.close();
7767
}
68+
7869
```
7970

8071
## Dependencies

examples/echo/main.rs

+16-36
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,22 @@
1-
#![allow(unused_variables)]
2-
#![allow(unused_imports)]
3-
#![allow(dead_code)]
4-
5-
#[macro_use]
6-
extern crate log;
7-
extern crate bytes;
8-
extern crate env_logger;
9-
extern crate futures;
101
extern crate rsocket_rust;
112
extern crate tokio;
12-
13-
use bytes::Bytes;
14-
use futures::prelude::*;
3+
#[macro_use]
4+
extern crate log;
155
use rsocket_rust::prelude::*;
6+
use std::env;
7+
use std::error::Error;
168

17-
fn main() {
18-
env_logger::builder()
19-
.default_format_timestamp_nanos(true)
20-
.init();
9+
#[tokio::main]
10+
async fn main() -> Result<(), Box<dyn Error>> {
11+
env_logger::builder().init();
12+
let addr = env::args().nth(1).unwrap_or("127.0.0.1:7878".to_string());
2113

22-
let server = RSocketFactory::receive()
23-
.transport(URI::Tcp("127.0.0.1:7878"))
24-
.acceptor(|setup, sending_socket| {
25-
info!("accept setup: {:?}", setup);
26-
// TODO: use tokio runtime?
27-
// std::thread::spawn(move || {
28-
// let resp = sending_socket
29-
// .request_response(
30-
// Payload::builder()
31-
// .set_data(Bytes::from("Hello Client!"))
32-
// .build(),
33-
// )
34-
// .wait()
35-
// .unwrap();
36-
// println!(">>>>> response success: {:?}", resp);
37-
// });
38-
Box::new(MockResponder)
39-
})
40-
.serve();
41-
tokio::run(server);
14+
RSocketFactory::receive()
15+
.transport(URI::Tcp(addr))
16+
.acceptor(|setup, _socket| {
17+
info!("accept setup: {:?}", setup);
18+
Box::new(EchoRSocket)
19+
})
20+
.serve()
21+
.await
4222
}

examples/proxy/main.rs

-31
This file was deleted.

src/core/callers.rs

-50
This file was deleted.

src/core/misc.rs

-25
This file was deleted.

src/core/mod.rs

-8
This file was deleted.

0 commit comments

Comments
 (0)