PHP кода по protobuf файлу для работы с gRPC?
сталкивался
Не мог, бы, пожалуйста, уточнить, как именно генерил клиента? Я скормил protobuf-файл тулзе protoc (https://github.com/protocolbuffers/protobuf) - как будто все сгенерилось, но в классе GPBMetadata вызывается $pool->internalAddGeneratedFile() в качестве аргумента передается какая-то странная строка, больше похожая на бинарник. Смотрю примеры в инете - у всех там передается 16-ричная строка, обернутая в hex2bin (https://github.com/protocolbuffers/protobuf-php/blob/master/src/GPBMetadata/Google/Protobuf/Any.php). Вот я что-то не пойму, я как-то неправильно код сгенерил? У меня дальше при его вызове все падает с ошибкой Error occurred during parsing: Fail to push limit. - подозреваю, что из-за этого
Примеры валидного кода смотрел?
не совсем понял, у тебя не работает клиент ? моешь прислать пример как ты используешь клиент ?
я не помню что бы как то заморачивался с такими вещами, у тебя должны сгенерироваться классы по прото файлу, дальше просто их юзать надо
В сервисе есть метод getUserDataByID(). У меня появились классы getUserDataByIDRequest и getUserDataByIDResponse. Я вызываю getUserDataByIDResponse->getData() и получаю Error occurred during parsing: Fail to push limit. Хотя, есть у меня подозрение, что я не так его вызываю
у меня это выглядит примерно так list($response, $status) = $service->getUserDataByID()->wait() то есть я создаю сначало клиента, потом вызываю у него метод что такое getUserDataByIDRequest и getUserDataByIDResponse я не совсем понял
если $status === 0 то $response это заполненый класс, достаточно вызывать те же свойства которые ты прописал в прото файле что бы получить значение
То есть гетеры не свойства)
Вроде нащупал проблему. У меня клиент в принципе не сгенерился, и я не тот класс дергаю. Вот тут об этом сказано: https://github.com/grpc/grpc/issues/22108 - дока с примером PHP устарела. Рекомендуют откатить protoc на более старую версию или использовать bazel
Точно, все получилось нормально сделать, откатившись на старую версию protoc, как указанно в ссылке. С ней все методы сгенерировались, как надо. Спасибо большое за помощь :)
Обсуждают сегодня