В API потоковой передачи C ++ gRP C есть ли способ проверить, сколько сообщений буферизуется в очереди grp c? - PullRequest
0 голосов
/ 11 января 2020

grpc_impl :: ServerReaderWriter / grpc_impl :: internal :: ReaderInterface реализует NextMessageSize (), но из именования выглядит так, будто он возвращает только размер следующего непосредственного сообщения, а из этого потока и в документации кажется, что возвращаемое значение является только верхней границей.

Для потоковых приложений (например, аудио / видео, текста, любых дуплексных потоков в реальном времени) было бы полезно узнать, сколько данных поступило от клиента, чтобы он мог быть, например, обработан навалом, или для измерения нереальности, или для адаптации к переменным скоростям потоков, и т. д. c.

Спасибо за любые указатели и объяснения.

1 Ответ

2 голосов
/ 17 января 2020

Текущий API не предоставляет таких возможностей. Обычно рекомендуется продолжать чтение из потока, особенно если приложение ожидает получения сообщений. Если приложение прекращает чтение, gRP C также прекращает чтение в какой-то момент в зависимости от того, как настроена квота ресурса. Даже если конфигурация такова, что gRP C никогда не прекращает чтение, мы рискуем использовать gRP C слишком много памяти.

Мне кажется, что вам нужно создать слой поверх gRP C, который буферизует сообщения, чтобы вы могли обрабатывать их в большом количестве и выполнять измерения.

...