Skip to content

Commit 3d1b25f

Browse files
authored
Merge pull request #6 from rsocket/improve/pick_transport
Improve/pick transport
2 parents ecae88d + 42e1094 commit 3d1b25f

Some content is hidden

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

74 files changed

+1946
-953
lines changed

.travis.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
language: rust
2+
rust:
3+
- stable
4+
script:
5+
- cargo build --verbose --all
6+
- cargo test -- --nocapture

Cargo.toml

Lines changed: 12 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,12 @@
1-
[package]
2-
name = "rsocket_rust"
3-
version = "0.4.0"
4-
authors = ["Jeffsky <[email protected]>"]
5-
edition = "2018"
6-
license = "Apache-2.0"
7-
readme = "README.md"
8-
repository = "https://github.com/rsocket/rsocket-rust"
9-
homepage = "https://github.com/rsocket/rsocket-rust"
10-
description = "rsocket-rust is an implementation of the RSocket protocol in Rust."
11-
12-
[dependencies]
13-
matches = "0.1.8"
14-
log = "0.4.8"
15-
bytes = "0.5.3"
16-
futures = "0.3.1"
17-
lazy_static = "1.4.0"
18-
url = "2.1.0"
19-
# reactor_rs = {git = "https://github.com/jjeffcaii/reactor-rust", branch = "develop"}
20-
21-
[dependencies.tokio]
22-
version = "0.2.6"
23-
default-features = false
24-
features = ["full"]
25-
26-
[dependencies.tokio-util]
27-
version = "0.2.0"
28-
default-features = false
29-
features = ["codec"]
30-
31-
[dev-dependencies]
32-
env_logger = "0.7.1"
33-
hex = "0.4.0"
34-
rand = "0.7.2"
35-
36-
[[example]]
37-
name = "echo"
38-
path = "examples/echo/main.rs"
39-
40-
[[example]]
41-
name = "proxy"
42-
path = "examples/proxy/main.rs"
1+
[workspace]
2+
3+
members = [
4+
"rsocket",
5+
"rsocket-transport-tcp",
6+
"rsocket-transport-websocket",
7+
"rsocket-transport-wasm",
8+
9+
# Internal
10+
"examples",
11+
"rsocket-test",
12+
]

README.md

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,30 +13,45 @@ It's an **alpha** version and still under active development.
1313

1414
> Here are some example codes which show how RSocket works in Rust.
1515
16+
### Dependencies
17+
18+
Add dependencies in your `Cargo.toml`.
19+
20+
```toml
21+
[dependencies]
22+
tokio = "0.2"
23+
rsocket_rust = "*"
24+
25+
# choose transport:
26+
# rsocket_rust_transport_tcp = "*"
27+
# rsocket_rust_transport_websocket = "*"
28+
```
29+
1630
### Server
1731

1832
```rust
19-
extern crate rsocket_rust;
20-
extern crate tokio;
2133
#[macro_use]
2234
extern crate log;
35+
2336
use rsocket_rust::prelude::*;
37+
use rsocket_rust_transport_tcp::TcpServerTransport;
2438
use std::env;
2539
use std::error::Error;
2640

2741
#[tokio::main]
28-
async fn main() -> Result<(), Box<dyn Error>> {
29-
env_logger::builder().init();
30-
let addr = env::args().nth(1).unwrap_or("tcp://127.0.0.1:7878".to_string());
42+
async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
43+
env_logger::builder().format_timestamp_millis().init();
44+
let addr = env::args().nth(1).unwrap_or("127.0.0.1:7878".to_string());
3145

3246
RSocketFactory::receive()
33-
.transport(&addr)
47+
.transport(TcpServerTransport::from(addr))
3448
.acceptor(|setup, _socket| {
3549
info!("accept setup: {:?}", setup);
3650
Ok(Box::new(EchoRSocket))
3751
// Or you can reject setup
3852
// Err(From::from("SETUP_NOT_ALLOW"))
3953
})
54+
.on_start(|| info!("+++++++ echo server started! +++++++"))
4055
.serve()
4156
.await
4257
}
@@ -45,16 +60,15 @@ async fn main() -> Result<(), Box<dyn Error>> {
4560
### Client
4661

4762
```rust
48-
extern crate rsocket_rust;
49-
5063
use rsocket_rust::prelude::*;
64+
use rsocket_rust_transport_tcp::TcpClientTransport;
5165

5266
#[tokio::main]
5367
#[test]
5468
async fn test() {
5569
let cli = RSocketFactory::connect()
5670
.acceptor(|| Box::new(EchoRSocket))
57-
.transport("tcp://127.0.0.1:7878")
71+
.transport(TcpClientTransport::from("127.0.0.1:7878"))
5872
.setup(Payload::from("READY!"))
5973
.mime_type("text/plain", "text/plain")
6074
.start()
@@ -71,11 +85,6 @@ async fn test() {
7185

7286
```
7387

74-
## Dependencies
75-
76-
- [tokio](https://tokio.rs/)
77-
- [futures-rs](http://rust-lang-nursery.github.io/futures-rs/)
78-
7988
## TODO
8089

8190
- Operations
@@ -85,7 +94,7 @@ async fn test() {
8594
- [x] REQUEST_STREAM
8695
- [x] REQUEST_CHANNEL
8796
- More Operations
88-
- [ ] Error
97+
- [x] Error
8998
- [ ] Cancel
9099
- [ ] Fragmentation
91100
- [ ] Resume
@@ -94,7 +103,8 @@ async fn test() {
94103
- [ ] Lease
95104
- Transport
96105
- [x] TCP
97-
- [ ] Websocket
106+
- [x] Websocket
107+
- [x] WASM: (see example: [https://github.com/jjeffcaii/rsocket-rust-wasm-example](https://github.com/jjeffcaii/rsocket-rust-wasm-example))
98108
- Reactor
99109
- [ ] ...
100110
- High Level APIs

examples/Cargo.toml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
[package]
2+
name = "examples"
3+
version = "0.0.0"
4+
authors = ["Jeffsky <[email protected]>"]
5+
edition = "2018"
6+
7+
[dev-dependencies]
8+
rsocket_rust = { path = "../rsocket" }
9+
rsocket_rust_transport_tcp = { path = "../rsocket-transport-tcp" }
10+
rsocket_rust_transport_websocket = { path = "../rsocket-transport-websocket" }
11+
log = "0.4.8"
12+
env_logger = "0.7.1"
13+
futures = "0.3.4"
14+
15+
[dev-dependencies.tokio]
16+
version = "0.2.11"
17+
default-features = false
18+
features = ["full"]
19+
20+
[[example]]
21+
name = "echo"
22+
path = "echo.rs"
23+
24+
[[example]]
25+
name = "proxy"
26+
path = "proxy.rs"

examples/echo/main.rs renamed to examples/echo.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
1-
extern crate rsocket_rust;
2-
extern crate tokio;
31
#[macro_use]
42
extern crate log;
3+
54
use rsocket_rust::prelude::*;
5+
use rsocket_rust_transport_tcp::TcpServerTransport;
66
use std::env;
77
use std::error::Error;
88

99
#[tokio::main]
1010
async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
1111
env_logger::builder().format_timestamp_millis().init();
12-
let addr = env::args()
13-
.nth(1)
14-
.unwrap_or("tcp://127.0.0.1:7878".to_string());
12+
let addr = env::args().nth(1).unwrap_or("127.0.0.1:7878".to_string());
13+
1514
RSocketFactory::receive()
16-
.transport(&addr)
15+
.transport(TcpServerTransport::from(addr))
1716
.acceptor(|setup, _socket| {
1817
info!("accept setup: {:?}", setup);
1918
Ok(Box::new(EchoRSocket))
Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,29 @@
11
#[macro_use]
22
extern crate log;
3-
extern crate env_logger;
4-
extern crate futures;
5-
extern crate rsocket_rust;
6-
extern crate tokio;
73

84
use futures::executor::block_on;
95
use rsocket_rust::prelude::*;
6+
use rsocket_rust_transport_tcp::*;
107
use std::error::Error;
118

129
#[tokio::main]
1310
async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
1411
env_logger::builder().format_timestamp_millis().init();
1512

1613
RSocketFactory::receive()
14+
.transport(TcpServerTransport::from("127.0.0.1:7979"))
1715
.acceptor(|setup, _sending_socket| {
1816
info!("incoming socket: setup={:?}", setup);
1917
Ok(Box::new(block_on(async move {
2018
RSocketFactory::connect()
19+
.transport(TcpClientTransport::from("127.0.0.1:7878"))
2120
.acceptor(|| Box::new(EchoRSocket))
2221
.setup(Payload::from("I'm Rust!"))
23-
.transport("tcp://127.0.0.1:7878")
2422
.start()
2523
.await
2624
.unwrap()
2725
})))
2826
})
29-
.transport("tcp://127.0.0.1:7979")
3027
.serve()
3128
.await
3229
}

rsocket-test/Cargo.toml

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
[package]
2+
name = "rsocket_rust_test"
3+
version = "0.0.0"
4+
authors = ["Jeffsky <[email protected]>"]
5+
edition = "2018"
6+
7+
[dev-dependencies]
8+
log = "0.4"
9+
futures = "0.3.4"
10+
env_logger = "0.7.1"
11+
rsocket_rust = { path = "../rsocket", features = ["frame"] }
12+
rsocket_rust_transport_tcp = { path = "../rsocket-transport-tcp" }
13+
rsocket_rust_transport_websocket = { path = "../rsocket-transport-websocket" }
14+
bytes = "0.5.4"
15+
hex = "0.4.2"
16+
rand = "0.7.3"
17+
18+
[dev-dependencies.tokio]
19+
version = "0.2.11"
20+
default-features = false
21+
features = ["full"]

0 commit comments

Comments
 (0)