2017-09-14 163 views
1

我正在使用Tarpc我可以连接到Tarpc RPC服务而不使用任何东西,但是使用服务器的地址吗?

客户

let (_, mut auth_reactor) = auth::spawn_server(auth_server_address); 
let auth_client: auth::FutureClient = auth_reactor 
    .run(auth::FutureClient::connect(
     auth_server_address, 
     client::Options::default(), 
    )) 
    .unwrap(); 

auth_reactor 
    .run(
     auth_client 
      .authme(byte_vector_auth.clone()) 
      .map_err(|e| println!("{}", e)) 
      .and_then(|i| { 
       println!("{:?}", i); 
       Ok(()) 
      }), 
    ) 
    .unwrap(); 

服务器

pub fn spawn_server(address: SocketAddr) -> (server::Handle, reactor::Core) { 
    let reactor = reactor::Core::new().unwrap(); 
    client::Options::default().handle(reactor.handle()); 
    let (auth_handler, server) = AuthServer 
     .listen(address, &reactor.handle(), server::Options::default()) 
     .unwrap(); 
    reactor.handle().spawn(server); 
    return (auth_handler, reactor); 
} 

我返回反应器,因为我需要它的客户。

回答

1

使用tokio,您需要一个反应器来运行您的异步客户端。 我不认为你需要使用与服务器相同的反应器,但每个线程只能有一个反应器。

所以你可以产生一个客户端线程,甚至为你的客户端建立一个不同的二进制文件。

你将不得不以另一种方式获得服务器地址,但这不应该太难;)

相关问题