mirror of
https://github.com/OMGeeky/tarpc.git
synced 2025-12-29 23:55:59 +01:00
Merge branch 'deref-impl' into 'master'
impl<P> Service for P where P: Send + Sync + ::std::ops::Deref<Target=Service> Fix #24 See merge request !6
This commit is contained in:
@@ -27,7 +27,8 @@
|
||||
//! use self::my_server::*;
|
||||
//! use std::time::Duration;
|
||||
//!
|
||||
//! impl my_server::Service for () {
|
||||
//! struct Server;
|
||||
//! impl my_server::Service for Server {
|
||||
//! fn hello(&self, s: String) -> String {
|
||||
//! format!("Hello, {}!", s)
|
||||
//! }
|
||||
@@ -38,8 +39,10 @@
|
||||
//!
|
||||
//! fn main() {
|
||||
//! let addr = "127.0.0.1:9000";
|
||||
//! let shutdown = my_server::serve(addr, (),
|
||||
//! Some(Duration::from_secs(30))).unwrap();
|
||||
//! let shutdown = my_server::serve(addr,
|
||||
//! Server,
|
||||
//! Some(Duration::from_secs(30)))
|
||||
//! .unwrap();
|
||||
//! let client = Client::new(addr, None).unwrap();
|
||||
//! assert_eq!(3, client.add(1, 2).unwrap());
|
||||
//! assert_eq!("Hello, Mom!".to_string(),
|
||||
|
||||
@@ -198,6 +198,18 @@ macro_rules! rpc {
|
||||
)*
|
||||
}
|
||||
|
||||
impl<P, S> Service for P
|
||||
where P: Send + Sync + ::std::ops::Deref<Target=S>,
|
||||
S: Service
|
||||
{
|
||||
$(
|
||||
$(#[$attr])*
|
||||
fn $fn_name(&self, $($arg:$in_),*) -> $out {
|
||||
Service::$fn_name(&**self, $($arg),*)
|
||||
}
|
||||
)*
|
||||
}
|
||||
|
||||
define_request!($($fn_name($($in_),*))*);
|
||||
|
||||
#[allow(non_camel_case_types)]
|
||||
@@ -291,7 +303,8 @@ mod test {
|
||||
|
||||
use self::my_server::*;
|
||||
|
||||
impl Service for () {
|
||||
struct Server;
|
||||
impl Service for Server {
|
||||
fn hello(&self, s: Foo) -> Foo {
|
||||
Foo { message: format!("Hello, {}", &s.message) }
|
||||
}
|
||||
@@ -301,11 +314,20 @@ mod test {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn serve_arc_server() {
|
||||
serve("localhost:0",
|
||||
::std::sync::Arc::new(Server),
|
||||
None)
|
||||
.unwrap()
|
||||
.shutdown();
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn simple_test() {
|
||||
println!("Starting");
|
||||
let addr = "127.0.0.1:9000";
|
||||
let shutdown = my_server::serve(addr, (), test_timeout()).unwrap();
|
||||
let shutdown = my_server::serve(addr, Server, test_timeout()).unwrap();
|
||||
let client = Client::new(addr, None).unwrap();
|
||||
assert_eq!(3, client.add(1, 2).unwrap());
|
||||
let foo = Foo { message: "Adam".into() };
|
||||
|
||||
Reference in New Issue
Block a user