{"id":21657370,"url":"https://github.com/aliakseis/grpc-demo","last_synced_at":"2026-05-20T10:43:34.650Z","repository":{"id":93559466,"uuid":"284245558","full_name":"aliakseis/grpc-demo","owner":"aliakseis","description":null,"archived":false,"fork":false,"pushed_at":"2025-09-21T11:33:41.000Z","size":33,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-21T13:21:13.920Z","etag":null,"topics":["cpp","grpc","publish-subscribe","streaming"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aliakseis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-08-01T11:19:52.000Z","updated_at":"2025-09-21T11:33:45.000Z","dependencies_parsed_at":"2023-03-12T22:00:22.945Z","dependency_job_id":null,"html_url":"https://github.com/aliakseis/grpc-demo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aliakseis/grpc-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliakseis%2Fgrpc-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliakseis%2Fgrpc-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliakseis%2Fgrpc-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliakseis%2Fgrpc-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aliakseis","download_url":"https://codeload.github.com/aliakseis/grpc-demo/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aliakseis%2Fgrpc-demo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33255859,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-20T04:48:54.280Z","status":"ssl_error","status_checked_at":"2026-05-20T04:48:10.851Z","response_time":356,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cpp","grpc","publish-subscribe","streaming"],"created_at":"2024-11-25T09:21:09.199Z","updated_at":"2026-05-20T10:43:34.646Z","avatar_url":"https://github.com/aliakseis.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# gRPC Demo (C++)\n\nA minimal but extendable **gRPC demo project in C++** showcasing a client–server architecture, message exchange via `.proto` definitions, and integration with supporting libraries.\n\n---\n\n## 🚀 Overview\n\nThis project demonstrates how to set up and use **gRPC** with modern **C++17**, using a clean modular structure.  \nIt includes:\n\n- A **gRPC server** (`server/`, `serverlib/`)\n- A **gRPC client** (`client/`, `clientlib/`)\n- A **shared protocol definition** (`proto/Fov.proto`)\n- **Utility libraries** (`common/`) and **transformer app** (`transformer/`)\n- Examples of **publish/subscribe client patterns**\n\n---\n\n## 📂 Project Structure\n```\ngrpc-demo-master/\n├── client/ # Demo client executable\n│ └── main.cpp\n├── clientlib/ # Client library implementation\n│ ├── ClientImpl.h\n│ ├── FovClient.cpp/h\n│ └── IPublishSubscribeClient.h\n├── common/ # Shared utilities\n│ ├── Delegate.h\n│ ├── fqueue.h\n│ └── notifications.hpp\n├── server/ # Demo server executable\n│ └── main.cpp\n├── serverlib/ # Server library implementation\n│ ├── FovServer.cpp/h\n│ └── ServerImpl.h\n├── transformer/ # Data transformer app\n│ └── main.cpp\n├── ultimateclient/ # Additional example client\n│ └── main.cpp\n├── proto/ # gRPC service definitions\n│ └── Fov.proto\n├── cmake/ # CMake helper scripts\n│ └── doxygenHelper.cmake\n├── docs/ # Doxygen configuration\n│ └── Doxyfile.in\n├── CMakeLists.txt # Root build configuration\n├── LICENSE # License information\n├── .gitignore\n└── .gitattributes\n```\n\n\n---\n\n## 🛠️ Dependencies\n\n- **C++17 or newer**\n- [gRPC](https://grpc.io/) (C++ implementation)\n- [Protobuf](https://developers.google.com/protocol-buffers)\n- [CMake ≥ 3.15](https://cmake.org/)\n- Standard C++ build toolchain (GCC, Clang, or MSVC)\n\nOptional:\n- [Doxygen](https://www.doxygen.nl/) for documentation generation\n\n---\n\n## ⚙️ Building\n\n1. **Clone the repository**:\n```\n   git clone https://github.com/yourusername/grpc-demo.git\n   cd grpc-demo-master\n```\n\n2. **Create a build directory**:\n\n```\n   mkdir build \u0026\u0026 cd build\n```\n\n3. **Run CMake**:\n\n```\ncmake ..\n```\n4. **Build the project**:\n\n```\ncmake --build .\n```\n▶️ Running\nStart the server:\n\n```\n./server/server\n```\n\nRun the client:\n\n```\n./client/client\n```\n\nBy default, the client connects to the server using the configuration defined in proto/Fov.proto.\n\n🔧 Extending\nAdd new services to proto/*.proto\n\nRun protoc with the gRPC C++ plugin to regenerate stubs\n\nImplement server handlers in serverlib/\n\nUpdate client logic in clientlib/\n\nExample protoc invocation:\n\n```\nprotoc -I=proto --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` proto/Fov.proto\nprotoc -I=proto --cpp_out=. proto/Fov.proto\n```\n📖 Documentation\nYou can generate API documentation with Doxygen:\n\n```\ncd build\nmake docs\n```\nOutput will be placed under docs/.\n\nThe code is structured to be modular and reusable.\n\nYou can integrate the client and server libraries into larger applications.\n\nThe transformer and ultimateclient are example applications showing flexibility of the architecture.\n\n* [Server implementation](serverlib/ServerImpl.h), [usage example](serverlib/FovServer.cpp)\n* [Client implementation](clientlib/ClientImpl.h), [usage example](clientlib/FovClient.cpp)\n\nhttps://user-images.githubusercontent.com/11851670/127492863-ae7e13a9-babe-46a9-8cd2-a118cda92448.mp4\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliakseis%2Fgrpc-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faliakseis%2Fgrpc-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliakseis%2Fgrpc-demo/lists"}