Der offizielle GRPC-Blog zeigt ein Beispiel für ein benutzerdefiniertes Marshaller in Java mit JSON:
https://grpc.io/blog/grpc-with-json/
Meine Fragen sind:
Wie stell ich meinen eigenen Serializer/Deserializer (JSON) für Anforderungsmeldungen/Codeen < /li>
Gibt es eine C ++ - API zum vollständigen Schreiben eines GRPC -Dienstes ohne .Proto < /code> Definitionen? Kann ich einen Dienst und eine Methode manuell registrieren, während ich Protoc Codeerzeugung umgeht? Dokumentation, Github Repo mit so etwas, ein Ausschnitt würde es auch gut machen. />
Was ich bisher getan /ausprobiert habe.
Code: Select all
template
class grpc::SerializationTraits {
public:
static grpc::Status Serialize(const nlohmann::json& json,
grpc::ByteBuffer* buffer,
bool* own_buffer) {
std::string s = json.dump();
grpc::Slice slice(s.data(), s.size());
*buffer = grpc::ByteBuffer(&slice, 1);
*own_buffer = true;
return grpc::Status::OK;
}
static grpc::Status Deserialize(grpc::ByteBuffer* buffer,
nlohmann::json* json) {
std::vector slices;
buffer->Dump(&slices);
std::string data;
for (auto& s : slices) {
data.append(reinterpret_cast(s.begin()), s.size());
}
try {
*json = nlohmann::json::parse(data);
} catch (const std::exception& e) {
return grpc::Status(grpc::StatusCode::INTERNAL,
std::string("JSON parse error: ") + e.what());
}
return grpc::Status::OK;
}
};