mirror of
https://github.com/OMGeeky/tarpc.git
synced 2025-12-29 07:40:14 +01:00
Use the JSON transport in examples
This commit is contained in:
@@ -114,9 +114,11 @@ impl World for HelloServer {
|
||||
Lastly let's write our `main` that will start the server. While this example uses an
|
||||
[in-process
|
||||
channel](https://docs.rs/tarpc/0.18.0/tarpc/transport/channel/struct.UnboundedChannel.html),
|
||||
tarpc also ships a
|
||||
[transport](https://docs.rs/tarpc-bincode-transport/0.7.0/tarpc_bincode_transport/)
|
||||
that uses bincode over TCP.
|
||||
tarpc also ships
|
||||
[bincode](https://docs.rs/tarpc-bincode-transport/0.7.0/tarpc_bincode_transport/)
|
||||
and
|
||||
[JSON](https://docs.rs/tarpc-json-transport/0.1.0/tarpc_json_transport)
|
||||
tokio-net based TCP transports that are generic over all serializable types.
|
||||
|
||||
```rust
|
||||
#[tokio::main]
|
||||
|
||||
@@ -27,8 +27,7 @@ tarpc-plugins = { path = "../plugins", version = "0.5.0" }
|
||||
|
||||
[dev-dependencies]
|
||||
assert_matches = "1.0"
|
||||
bincode = "1.0"
|
||||
tarpc-bincode-transport = { version = "0.7", path = "../bincode-transport" }
|
||||
tarpc-json-transport = { version = "0.1", path = "../json-transport" }
|
||||
bytes = { version = "0.4", features = ["serde"] }
|
||||
env_logger = "0.6"
|
||||
futures-preview = { version = "0.3.0-alpha.18" }
|
||||
|
||||
@@ -59,7 +59,8 @@ impl subscriber::Subscriber for Subscriber {
|
||||
|
||||
impl Subscriber {
|
||||
async fn listen(id: u32, config: server::Config) -> io::Result<SocketAddr> {
|
||||
let incoming = tarpc_bincode_transport::listen(&"0.0.0.0:0".parse().unwrap())?
|
||||
let incoming = tarpc_json_transport::listen("0.0.0.0:0")
|
||||
.await?
|
||||
.filter_map(|r| future::ready(r.ok()));
|
||||
let addr = incoming.get_ref().local_addr();
|
||||
tokio::spawn(
|
||||
@@ -113,7 +114,7 @@ impl publisher::Publisher for Publisher {
|
||||
id: u32,
|
||||
addr: SocketAddr,
|
||||
) -> io::Result<()> {
|
||||
let conn = tarpc_bincode_transport::connect(&addr).await?;
|
||||
let conn = tarpc_json_transport::connect(addr).await?;
|
||||
let subscriber =
|
||||
subscriber::SubscriberClient::new(client::Config::default(), conn).spawn()?;
|
||||
eprintln!("Subscribing {}.", id);
|
||||
@@ -145,7 +146,8 @@ impl publisher::Publisher for Publisher {
|
||||
async fn main() -> io::Result<()> {
|
||||
env_logger::init();
|
||||
|
||||
let transport = tarpc_bincode_transport::listen(&"0.0.0.0:0".parse().unwrap())?
|
||||
let transport = tarpc_json_transport::listen("0.0.0.0:0")
|
||||
.await?
|
||||
.filter_map(|r| future::ready(r.ok()));
|
||||
let publisher_addr = transport.get_ref().local_addr();
|
||||
tokio::spawn(
|
||||
@@ -158,7 +160,7 @@ async fn main() -> io::Result<()> {
|
||||
let subscriber1 = Subscriber::listen(0, server::Config::default()).await?;
|
||||
let subscriber2 = Subscriber::listen(1, server::Config::default()).await?;
|
||||
|
||||
let publisher_conn = tarpc_bincode_transport::connect(&publisher_addr);
|
||||
let publisher_conn = tarpc_json_transport::connect(publisher_addr);
|
||||
let publisher_conn = publisher_conn.await?;
|
||||
let mut publisher =
|
||||
publisher::PublisherClient::new(client::Config::default(), publisher_conn).spawn()?;
|
||||
|
||||
@@ -39,9 +39,9 @@ impl World for HelloServer {
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> io::Result<()> {
|
||||
// tarpc_bincode_transport is provided by the associated crate bincode-transport. It makes it
|
||||
// easy to start up a serde-powered bincode serialization strategy over TCP.
|
||||
let mut transport = tarpc_bincode_transport::listen(&"0.0.0.0:0".parse().unwrap())?;
|
||||
// tarpc_json_transport is provided by the associated crate json-transport. It makes it
|
||||
// easy to start up a serde-powered JSON serialization strategy over TCP.
|
||||
let mut transport = tarpc_json_transport::listen("0.0.0.0:0").await?;
|
||||
let addr = transport.local_addr();
|
||||
|
||||
let server = async move {
|
||||
@@ -61,7 +61,7 @@ async fn main() -> io::Result<()> {
|
||||
};
|
||||
tokio::spawn(server);
|
||||
|
||||
let transport = tarpc_bincode_transport::connect(&addr).await?;
|
||||
let transport = tarpc_json_transport::connect(addr).await?;
|
||||
|
||||
// WorldClient is generated by the tarpc::service attribute. It has a constructor `new` that
|
||||
// takes a config and any Transport as input.
|
||||
|
||||
@@ -66,7 +66,8 @@ impl DoubleService for DoubleServer {
|
||||
async fn main() -> io::Result<()> {
|
||||
env_logger::init();
|
||||
|
||||
let add_listener = tarpc_bincode_transport::listen(&"0.0.0.0:0".parse().unwrap())?
|
||||
let add_listener = tarpc_json_transport::listen("0.0.0.0:0")
|
||||
.await?
|
||||
.filter_map(|r| future::ready(r.ok()));
|
||||
let addr = add_listener.get_ref().local_addr();
|
||||
let add_server = Server::default()
|
||||
@@ -75,10 +76,11 @@ async fn main() -> io::Result<()> {
|
||||
.respond_with(AddServer.serve());
|
||||
tokio::spawn(add_server);
|
||||
|
||||
let to_add_server = tarpc_bincode_transport::connect(&addr).await?;
|
||||
let to_add_server = tarpc_json_transport::connect(addr).await?;
|
||||
let add_client = add::AddClient::new(client::Config::default(), to_add_server).spawn()?;
|
||||
|
||||
let double_listener = tarpc_bincode_transport::listen(&"0.0.0.0:0".parse().unwrap())?
|
||||
let double_listener = tarpc_json_transport::listen("0.0.0.0:0")
|
||||
.await?
|
||||
.filter_map(|r| future::ready(r.ok()));
|
||||
let addr = double_listener.get_ref().local_addr();
|
||||
let double_server = rpc::Server::default()
|
||||
@@ -87,7 +89,7 @@ async fn main() -> io::Result<()> {
|
||||
.respond_with(DoubleServer { add_client }.serve());
|
||||
tokio::spawn(double_server);
|
||||
|
||||
let to_double_server = tarpc_bincode_transport::connect(&addr).await?;
|
||||
let to_double_server = tarpc_json_transport::connect(addr).await?;
|
||||
let mut double_client =
|
||||
double::DoubleClient::new(client::Config::default(), to_double_server).spawn()?;
|
||||
|
||||
|
||||
@@ -136,9 +136,11 @@
|
||||
//! Lastly let's write our `main` that will start the server. While this example uses an
|
||||
//! [in-process
|
||||
//! channel](https://docs.rs/tarpc/0.18.0/tarpc/transport/channel/struct.UnboundedChannel.html),
|
||||
//! tarpc also ships a
|
||||
//! [transport](https://docs.rs/tarpc-bincode-transport/0.7.0/tarpc_bincode_transport/)
|
||||
//! that uses bincode over TCP.
|
||||
//! tarpc also ships
|
||||
//! [bincode](https://docs.rs/tarpc-bincode-transport/0.7.0/tarpc_bincode_transport/)
|
||||
//! and
|
||||
//! [JSON](https://docs.rs/tarpc-json-transport/0.1.0/tarpc_json_transport)
|
||||
//! tokio-net based TCP transports that are generic over all serializable types.
|
||||
//!
|
||||
//! ```rust
|
||||
//! # extern crate futures;
|
||||
|
||||
@@ -61,7 +61,7 @@ async fn sequential() -> io::Result<()> {
|
||||
async fn serde() -> io::Result<()> {
|
||||
let _ = env_logger::try_init();
|
||||
|
||||
let transport = tarpc_bincode_transport::listen(&([0, 0, 0, 0], 56789).into())?;
|
||||
let transport = tarpc_json_transport::listen("0.0.0.0:56789").await?;
|
||||
let addr = transport.local_addr();
|
||||
tokio::spawn(
|
||||
tarpc::Server::default()
|
||||
@@ -69,7 +69,7 @@ async fn serde() -> io::Result<()> {
|
||||
.respond_with(Server.serve()),
|
||||
);
|
||||
|
||||
let transport = tarpc_bincode_transport::connect(&addr).await?;
|
||||
let transport = tarpc_json_transport::connect(addr).await?;
|
||||
let mut client = ServiceClient::new(client::Config::default(), transport).spawn()?;
|
||||
|
||||
assert_matches!(client.add(context::current(), 1, 2).await, Ok(3));
|
||||
|
||||
Reference in New Issue
Block a user