// Copyright (C) 2022 The Qt Company Ltd. // Copyright (C) 2019 Alexey Edelev // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 // Qt-Security score:critical reason:data-parser #include "serverdeclarationprinter.h" #include #include #include "generatorcommon.h" #include "grpctemplates.h" using namespace ::QtGrpc; using namespace ::qtprotoccommon; using namespace ::google::protobuf; /*! \class ServerDeclarationPrinter \inmodule qtprotobufgen \private \brief Generates gRPC server class declaration. */ ServerDeclarationPrinter::ServerDeclarationPrinter( const ::google::protobuf::ServiceDescriptor *service, const std::shared_ptr<::google::protobuf::io::Printer> &printer) : DescriptorPrinterBase<::google::protobuf::ServiceDescriptor>( service, printer, common::produceServiceTypeMap(service, nullptr)) { } void ServerDeclarationPrinter::printOpenNamespace() { m_printer->Print({ { "scope_namespaces", m_typeMap["scope_type"] } }, CommonTemplates::NamespaceTemplate()); } void ServerDeclarationPrinter::printClassName() { m_printer->Print(m_typeMap, GrpcTemplates::ChildClassDeclarationTemplate()); } void ServerDeclarationPrinter::printMethodsDeclaration(const char *methodTemplate, const char *methodAsyncTemplate, const char *methodAsync2Template) { Indent(); for (int i = 0; i < m_descriptor->method_count(); ++i) { const MethodDescriptor *method = m_descriptor->method(i); std::map parameters = common::produceMethodMap( method, m_typeMap["classname"]); m_printer->Print(parameters, methodTemplate); m_printer->Print(parameters, methodAsyncTemplate); m_printer->Print(parameters, methodAsync2Template); } Outdent(); } void ServerDeclarationPrinter::printCloseNamespace() { m_printer->Print({ { "scope_namespaces", m_typeMap["scope_type"] } }, CommonTemplates::NamespaceClosingTemplate()); }