1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
// Copyright 2016 Google Inc. All Rights Reserved. // // Licensed under the MIT License, <LICENSE or http://opensource.org/licenses/MIT>. // This file may not be copied, modified, or distributed except according to those terms. //! An RPC library for Rust. //! //! Example usage: //! //! ``` //! #[macro_use] extern crate tarpc; //! mod my_server { //! service! { //! rpc hello(name: String) -> String; //! rpc add(x: i32, y: i32) -> i32; //! } //! } //! //! use self::my_server::*; //! use std::time::Duration; //! //! struct Server; //! impl my_server::Service for Server { //! fn hello(&self, s: String) -> String { //! format!("Hello, {}!", s) //! } //! fn add(&self, x: i32, y: i32) -> i32 { //! x + y //! } //! } //! //! fn main() { //! let addr = "127.0.0.1:9000"; //! let shutdown = Server.spawn(addr).unwrap(); //! let client = Client::new(addr).unwrap(); //! assert_eq!(3, client.add(1, 2).unwrap()); //! assert_eq!("Hello, Mom!".to_string(), //! client.hello("Mom".to_string()).unwrap()); //! drop(client); //! shutdown.shutdown(); //! } //! ``` #![deny(missing_docs)] extern crate serde; extern crate bincode; #[macro_use] extern crate log; extern crate scoped_pool; macro_rules! pos { () => (concat!(file!(), ":", line!())) } /// Provides the tarpc client and server, which implements the tarpc protocol. /// The protocol is defined by the implementation. pub mod protocol; /// Provides the macro used for constructing rpc services and client stubs. pub mod macros; pub use protocol::{Config, Error, Result, ServeHandle};