investAPI icon indicating copy to clipboard operation
investAPI copied to clipboard

gRPC генерирует namespace "public" на с++

Open yelowt opened this issue 3 years ago • 9 comments

Добрый день! При генерации с++ кода по investAPI proto файлам package tinkoff.public.invest.api.contract.v1; генерирует namespace public. Полученный код не собирается. Естественно, при коррекции package tinkoff.invest.api.contract.v1; Код собирается, но такая удаленная процедура UNIMPLEMENTED.

yelowt avatar Feb 10 '22 20:02 yelowt

Добрый вечер, да, есть проблема, думаем как решить

AlexanderVolkovTCS avatar Feb 14 '22 16:02 AlexanderVolkovTCS

Спасибо! Буду ждать решения

yelowt avatar Feb 14 '22 19:02 yelowt

Попробуем закинуть pull request в репозиторий grpc-cpp генератора, по пока в качестве временной меры попробуйте удалить из сгенерированного кода упоминания ::public и namespace public

AlexanderVolkovTCS avatar Feb 15 '22 07:02 AlexanderVolkovTCS

Добрый день! В качестве временного решения можно использовать автозамену namespace public на namespace public_ и ::public на ::public_ в сгенерированных файлах. Например с помощью команды в каталоге с этими файлами:

sed -i '' 's/namespace public/namespace public_/g; s/::public/::public_/g' *.pb.*  

Автозамена потребуется после каждой генерации файлов.

malyginvv avatar Feb 17 '22 11:02 malyginvv

Добрый день! Сделал замену ::public на ::public_ в сгенерированных файлах. Код собирается. Но при вызове функций API (например Currencies) все та же ошибка {"error": "12 UNIMPLEMENTED: "}

yelowt avatar Feb 17 '22 14:02 yelowt

В файле instruments.grpc.pb.cc в массиве InstrumentsService_method_names случайно ничего не изменилось? Там есть строка "/tinkoff.public.invest.api.contract.v1.InstrumentsService/Currencies"?

malyginvv avatar Feb 17 '22 15:02 malyginvv

Добрый день! Предложенное временное решение заработало. Спасибо!

yelowt avatar Feb 19 '22 12:02 yelowt

Аналогичная проблема, но с QtProtobuf. Автоматизировать, пока рано. Делаю замену в .proto файлах с package tinkoff.public.invest.api.contract.v1; на package tinkoff.api; В сгенерированных исходниках прописываю автозаменой по всем нужный путь к методам по апи. С чисто плюсовой версией приходится править все руками. Есть идея сгенерить на чистый С, и под него уже обертку на плюсах написать, но еще не пробовал. Ну и REST, как в v1, на крайний случай.

ivtst1 avatar May 03 '22 21:05 ivtst1

https://github.com/protocolbuffers/protobuf/issues/9058 вопрос в protocolbuffers закинули, будет здорово, если тоже отметитесь там

AlexanderVolkovTCS avatar May 06 '22 14:05 AlexanderVolkovTCS