Что такое gRPC ++ эквивалент Go context.Background ()? - PullRequest
1 голос
/ 24 апреля 2020

Если я правильно понимаю ::grpc::ServerContext, нет способа получить пустой.

Так есть ли идея, что все мои методы должны работать вместо ::grpc::ClientContext?

Если нет, это эквивалент вызова Go context.Background(), который позволяет мне получить контекст для утилит командной строки и тому подобного.

1 Ответ

0 голосов
/ 29 апреля 2020

Согласно контекстной документации go ,

context.Background() возвращает ненулевой пустой контекст. Он никогда не отменяется, не имеет значений и не имеет крайнего срока. Обычно он используется главной функцией, инициализацией и тестами, а также в качестве контекста верхнего уровня для входящих запросов.

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

Теперь вернемся к C ++, просмотрев источник , вы можете увидеть, что контекст построен аналогичным образом, и несколько примеров иллюстрируют что можно использовать пустой ClientContext .

Кроме того, проверка https://grpc.github.io/blog/deadlines показывает, что для C ++ вы можете установить крайний срок, например:

ClientContext context;
time_point deadline = std::chrono::system_clock::now() + 
    std::chrono::milliseconds(100);
context.set_deadline(deadline);

Что для меня означает, что эквивалент context.Background() в C ++ является справедливым и пустым контекстом:

ClientContext context;

Также это относится и к ServerContext. Я надеюсь, что это может помочь вам!

...