Java-клиент gRPC - hasNext во время onNext? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть служба потоковой передачи gRPC на стороне сервера, которая может получать сообщения очень быстро.Приятно было бы иметь клиентскую функцию - знать, что к тому времени, когда это выполнение onNext готово отобразить в пользовательском интерфейсе, уже появилось больше обновлений в очереди, так как вместо этого я просто отобразил бы следующее.

    StreamObserver< Info > streamObserver = new StreamObserver< info >( )
    {

        @Override
        public void onNext( Info info )
        {
              doStuffForALittleWhile();
              if( !someHasNextFunction() )
                   render();
        }
    }

Есть ли у некоторых следующая функция или метод обнаружения, о которых я не знаю?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Одним из способов было бы иметь небольшой буфер с сообщениями из onNext.Это позволит вам узнать текущее сообщение, а затем проверить, не пришло ли другое в это время.

0 голосов
/ 10 декабря 2018

Нет API для определения того, были ли дополнительные сообщения получены, но еще не доставлены в приложение.

API-заглушка на стороне клиента (например, StreamObserver) реализована с использованием более продвинутого ClientCall / ClientCall.Listener API.Он не предоставляет никаких подсказок, полученных, но не доставленных.

Внутренне, gRPC обрабатывает сообщения лениво.gRPC ждет, пока приложение не будет готово к большему количеству сообщений (обычно возвращаясь с StreamObserver.onNext()), чтобы попытаться декодировать другое сообщение.Если оно декодирует другое сообщение, оно немедленно начнет доставлять это сообщение.

...