Как я могу сказать, с каким сервером gRPC я общаюсь? - PullRequest
0 голосов
/ 20 февраля 2019

Предисловие: Существует проект под названием LND , который использует два сервера gRPC.Начинается прослушивание при загрузке с помощью службы WalletUnlocker.Методы связаны с разблокировкой узла LND для использования.Затем, когда он разблокирован, процесс LND убивает сервер gRPC и на тех же самых портах создает новый сервер со службой Lightning.(Совершенно разные методы)

Я хочу программно пропинговать gRPC узла LND и спросить его: «Какие сервисы вы сейчас обслуживаете, чтобы я мог узнать, нужно ли мне разблокировать вас и ждать, или я могу пойти?о моей работе с вашим сервисом Lightning. "

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

Спасибо.

1 Ответ

0 голосов
/ 20 февраля 2019

Могут быть способы определения этого в зависимости от некоторых особенностей рассматриваемых служб и серверов.Если серверы поддерживают службу отражения сервера , вы можете запросить эту службу, чтобы определить, какие службы / методы обслуживает сервер.Если они не поддерживают это, следующая лучшая вещь - просто попытаться сделать запрос к одному из методов для одной из служб;если метод завершается успешно, вы знаете, что сервер в настоящее время обслуживает эту службу, и если он завершается с ошибкой UNIMPLEMENTED, вы знаете, что она обслуживает другую службу.

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

...