2017-09-14 7 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を使用すると、非同期クライアントを実行するリアクタが必要です。 私はあなたがサーバと同じリアクタを使う必要はないと思っていますが、スレッドごとにリアクタを1つしか持てません。

クライアントスレッドを生成することも、クライアント用に別のバイナリを作成することもできます。

別の方法でサーバーアドレスを取得する必要がありますが、これはあまり厳しくしないでください)

関連する問題