diff --git a/README.md b/README.md index 5969207..e4b4a1f 100644 --- a/README.md +++ b/README.md @@ -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] diff --git a/tarpc/Cargo.toml b/tarpc/Cargo.toml index c40a55b..6c4743d 100644 --- a/tarpc/Cargo.toml +++ b/tarpc/Cargo.toml @@ -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" } diff --git a/tarpc/examples/pubsub.rs b/tarpc/examples/pubsub.rs index 03ab920..9e32bef 100644 --- a/tarpc/examples/pubsub.rs +++ b/tarpc/examples/pubsub.rs @@ -59,7 +59,8 @@ impl subscriber::Subscriber for Subscriber { impl Subscriber { async fn listen(id: u32, config: server::Config) -> io::Result { - 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()?; diff --git a/tarpc/examples/readme.rs b/tarpc/examples/readme.rs index f86e635..39685e0 100644 --- a/tarpc/examples/readme.rs +++ b/tarpc/examples/readme.rs @@ -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. diff --git a/tarpc/examples/server_calling_server.rs b/tarpc/examples/server_calling_server.rs index b06e87e..2830c94 100644 --- a/tarpc/examples/server_calling_server.rs +++ b/tarpc/examples/server_calling_server.rs @@ -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()?; diff --git a/tarpc/src/lib.rs b/tarpc/src/lib.rs index b2efce7..51d17b6 100644 --- a/tarpc/src/lib.rs +++ b/tarpc/src/lib.rs @@ -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; diff --git a/tarpc/tests/service_functional.rs b/tarpc/tests/service_functional.rs index 25d988a..c0d2db8 100644 --- a/tarpc/tests/service_functional.rs +++ b/tarpc/tests/service_functional.rs @@ -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));