Изменить метаданные во время двунаправленной потоковой передачи Grp c в C ++ - PullRequest
0 голосов
/ 22 января 2020

Используя Asyn c двунаправленную потоковую передачу, могу ли я создать поток клиента (ClientAsyncReaderWriter) и изменить значение метаданных в ClientContext для каждого запроса, отправленного в этом потоке? Кроме того, на стороне сервера я могу использовать ServerContext входящего клиентского потока, чтобы отправить измененное значение метаданных для каждого ответа, отправленного обратно клиенту в двунаправленном потоке. Пожалуйста, дайте мне знать, если есть способ сделать это, так как я не хочу поддерживать несколько потоков для каждого значения метаданных. Я хотел бы использовать один и тот же поток и отправлять разные значения метаданных для ключа для каждого запроса / ответа, передаваемого в этом двунаправленном потоке.

Ответы [ 2 ]

0 голосов
/ 24 января 2020

Метаданные привязаны к потоку; см. документацию https://github.com/grpc/grpc/blob/master/CONCEPTS.md#abstract -grp c -protocol

Существует клиентский перехватчик https://github.com/grpc/grpc/blob/master/include/grpcpp/impl/codegen/client_interceptor.h, который может помочь

Эти тесты показывают примеры использования перехватчиков: https://github.com/grpc/grpc/blob/master/test/cpp/end2end/client_interceptors_end2end_test.cc

0 голосов
/ 23 января 2020

Это намеренно не поддерживается.

Метаданные предназначены для уровня RP C для каждого двунаправленного потока; не за запрос / ответ. Если вы sh хотите передать информацию по запросу / ответу, вы должны поместить ее в запрос / ответ.

Метаданные предназначены для всех запросов / ответов в одном потоке.

...