rsocket-rust


rsocket-rust is an implementation of the RSocket protocol in Rust.
It is under active development. Do not use it in a production environment.
Example
Here's a prototype of RSocket Client API.
extern crate bytes;
extern crate futures;
extern crate rsocket_rust;
extern crate tokio;
use bytes::Bytes;
use futures::{Future, Stream};
use rsocket_rust::prelude::*;
#[test]
fn test_socket_request() {
let addr = "127.0.0.1:7878".parse().unwrap();
let socket = DuplexSocket::builder()
.set_acceptor(Box::new(MockResponder))
.connect(&addr);
let setup = SetupPayload::builder()
.set_data(Bytes::from("Ready!"))
.build();
socket.setup(setup).wait().unwrap();
socket
.metadata_push(
Payload::builder()
.set_metadata(Bytes::from("metadata only!"))
.build(),
)
.wait()
.unwrap();
let fnf = Payload::from("Mock FNF");
socket.request_fnf(fnf).wait().unwrap();
for n in 0..3 {
let sending = Payload::builder()
.set_data(Bytes::from(format!("[{}] Hello Rust!", n)))
.set_metadata(Bytes::from("text/plain"))
.build();
let result = socket.request_response(sending).wait().unwrap();
println!("********** YES: {:?}", result);
}
let sending = Payload::builder()
.set_data(Bytes::from("Hello Rust!"))
.set_metadata(Bytes::from("text/plain"))
.build();
let task = socket
.request_stream(sending)
.map_err(|_| ())
.for_each(|it| {
println!("******* STREAM: {:?}", it);
Ok(())
});
task.wait().unwrap();
}
TODO
- Codec
- Transport
- Rx
- High Level APIs