Вопрос:

Как я могу использовать Hyper-клиент из функции gRPC?

rust hyper

23 просмотра

1 ответ

2483 Репутация автора

У меня есть сервер gRPC и мне нужно сделать HTTP GET. Я изо всех сил пытаюсь получить фьючерсы прямо в звонках.

Я пытаюсь это

fn current(
    &self,
    _: ::grpc::RequestOptions,
    p: quote::CurrentRequest,
) -> ::grpc::SingleResponse<quote::CurrentResponse> {
    let symbol = p.get_symbol();

    let client = Client::new();
    let fut: grpc::GrpcFuture<quote::CurrentResponse> = Box::new(
        client
            .get(Uri::from_static(AlphaFunction::base_url()))
            .and_then(|res| res.into_body().concat2())
            .and_then(|body| {
                info!("body {:?}", body);
                let mut r = quote::CurrentResponse::new();
                // TODO: Parse body
                r.set_symbol(symbol.to_string());
                Ok(r)
            })
            .map_err(|e| e),
    );

    grpc::SingleResponse::new(fut)
}

Но я получаю кучу ошибок:

expected struct `hyper::error::Error`, found enum `grpc::error::Error`

а также

    77 |         grpc::SingleResponse::new(fut)
       |         ^^^^^^^^^^^^^^^^^^^^^^^^^ expected struct `protos::quote::CurrentResponse`, found tuple
Автор: Fredrik Jansson Источник Размещён: 11.06.2019 11:33

Ответы (1)


-1 плюса

2483 Репутация автора

Я понял:

let fut = client
    .get(Uri::from_static(AlphaFunction::base_url()))
    .and_then(|res| res.into_body().concat2())
    .and_then(move |body| {
        info!("body {:?}", body);
        let mut r = quote::CurrentResponse::new();
        r.set_symbol(symbol.to_string());
        Ok(r)
    })
    .map_err(|e| grpc::Error::Panic(format!("{}", e)));
Автор: Fredrik Jansson Размещён: 12.06.2019 04:28
Вопросы из категории :
32x32