# CuraEngine_grpc_definitions **Repository Path**: boolerule/CuraEngine_grpc_definitions ## Basic Information - **Project Name**: CuraEngine_grpc_definitions - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: 0.1 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-24 - **Last Updated**: 2025-02-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gRPC definitions for CuraEngine This repository contains the gRPC proto definitions for CuraEngine. These definitions are used to generate the gRPC code for the CuraEngine gRPC plugin system. ## Overview As part of the [CuraEngine](https://github.com/Ultimaker/CuraEngine) plugin system, the CuraEngine serves as gRPC client. The functionality of CuraEngine can be extended with CuraEngine plugins, which behaves as servers. The gRPC client/server uses the [Protocol Buffers](https://developers.google.com/protocol-buffers) format. This repository contains the definitions for the gRPC server and client(s). ## Usage The gRPC definitions are available for the following languages:
Conan Usage in `conanfile.py` ```python class CuraEnginePluginConan(ConanFile): ... def requirements(self): self.requires("asio-grpc/2.4.0") self.requires("curaengine_grpc_definitions/(latest)@ultimaker/testing") ... def generate(self): tc = CMakeToolchain(self) cpp_info = self.dependencies["curaengine_grpc_definitions"].cpp_info tc.variables["GRPC_IMPORT_DIRS"] = cpp_info.resdirs[0] tc.variables["GRPC_PROTOS"] = ";".join([str(p).replace("\\", "/") for p in Path(cpp_info.resdirs[0]).rglob("*.proto")]) tc.generate() ... ``` Usage in `CMakeLists.txt` ```cmake ... find_package(asio-grpc REQUIRED) asio_grpc_protobuf_generate(PROTOS "${GRPC_PROTOS}" IMPORT_DIRS ${GRPC_IMPORT_DIRS} OUT_VAR "ASIO_GRPC_PLUGIN_PROTO_SOURCES" OUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/generated" GENERATE_GRPC GENERATE_MOCK_CODE) add_executable(engine_plugin_target_name ${PROTO_SRCS} ${ASIO_GRPC_PLUGIN_PROTO_SOURCES} main.cpp ...) target_include_directories(engine_plugin_target_name PUBLIC ... PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/generated ) target_link_libraries(simplify_boost_plugin PUBLIC asio-grpc::asio-grpc ...) ... ``` See: https://github.com/Ultimaker/Cura/wiki/Running-Cura-from-Source#1-configure-conan how to configure Conan ```bash conan install . --build=missing --update ```
Python ```bash pip install git+https://github.com/Ultimaker/CuraEngine_grpc_definitions.git ``` ```python import grpc from CuraEngineGRPC.cura_pb2_grpc import CuraStub import CuraEngineGRPC.cura_pb2 as cura_pb .... ```
Rust Required dependencies before the gRPC definitions can be used are: [`protoc`, `protobuf`](https://github.com/hyperium/tonic#dependencies). Then add the following package to your `Cargo.toml`: ```bash cargo add --git https://github.com/Ultimaker/curaengine_grpc_definitions.git ```
## License This project is licensed under the [MIT license](LICENSE).