{"id":16019792,"url":"https://github.com/zduny/zzrpc","last_synced_at":"2025-07-18T07:05:05.705Z","repository":{"id":64988862,"uuid":"579920082","full_name":"zduny/zzrpc","owner":"zduny","description":"RPC over mezzenger transports.","archived":false,"fork":false,"pushed_at":"2023-09-20T16:09:07.000Z","size":69,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-06-03T06:15:08.799Z","etag":null,"topics":["communication","rpc","rpc-library"],"latest_commit_sha":null,"homepage":"https://docs.rs/zzrpc/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zduny.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"ko_fi":"zduny"}},"created_at":"2022-12-19T09:16:08.000Z","updated_at":"2023-06-18T16:11:30.000Z","dependencies_parsed_at":"2024-10-27T17:26:10.902Z","dependency_job_id":null,"html_url":"https://github.com/zduny/zzrpc","commit_stats":{"total_commits":58,"total_committers":1,"mean_commits":58.0,"dds":0.0,"last_synced_commit":"946ddc2e86fa394d210e07ffebf256cf0b3c243f"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zduny/zzrpc","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zduny%2Fzzrpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zduny%2Fzzrpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zduny%2Fzzrpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zduny%2Fzzrpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zduny","download_url":"https://codeload.github.com/zduny/zzrpc/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zduny%2Fzzrpc/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265716306,"owners_count":23816354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["communication","rpc","rpc-library"],"created_at":"2024-10-08T17:05:22.756Z","updated_at":"2025-07-18T07:05:05.683Z","avatar_url":"https://github.com/zduny.png","language":"Rust","funding_links":["https://ko-fi.com/zduny","https://ko-fi.com/O5O31JYZ4"],"categories":[],"sub_categories":[],"readme":"# zzrpc\n\n[![Test Status](https://github.com/zduny/zzrpc/actions/workflows/rust.yml/badge.svg)](https://github.com/zduny/zzrpc/actions)\n[![Crate](https://img.shields.io/crates/v/zzrpc.svg)](https://crates.io/crates/zzrpc)\n[![API](https://docs.rs/zzrpc/badge.svg)](https://docs.rs/zzrpc)\n\n[RPC](https://en.wikipedia.org/wiki/Remote_procedure_call) over [mezzenger](https://github.com/zduny/mezzenger) transports.\n\nhttps://crates.io/crates/zzrpc\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/O5O31JYZ4)\n\n## usage\n\nSee [zzrpc-tutorial](https://github.com/zduny/zzrpc-tutorial).\n\n## targeting WebAssembly\n\nSee [rust-webapp-template-api](https://github.com/zduny/rust-webapp-template-api).\n\n## further work\n\nFollowing improvements are planned for development:\n\n1. Support for two more method types:\n\n  - method with default return without acknowledgment - its future will return as soon as request message is sent to producer without waiting for `()` response from the producer:\n    ```rust\n    #[no-ack]\n    async fn do_something_i_dont_care_if_it_completes(\u0026self, some_argument: i32);\n    ```\n \n  - method with [`CancellationToken`](https://docs.rs/tokio-util/latest/tokio_util/sync/struct.CancellationToken.html) argument - so producer implementors can receive request abort messages (currently \"aborting\" a request means only that the producer will ignore task's result and not send it to the consumer - it doesn't mean the task itself is meaningfully affected):\n    ```rust\n    use tokio_util::sync::CancellationToken;\n  \n    // ...\n  \n    async fn do_some_task(\n        \u0026self, \n        cancellation_token: CancellationToken, \n        some_argument: i32) -\u003e u64;\n    ```\n    Of course consumer method would not have `cancellation_token` argument:\n    ```rust\n    fn do_some_task(\u0026self, some_argument: i32) -\u003e zzrpc::ValueRequest\u003cu64, Request, Self::Error\u003e;\n    ```\n    \n\n2. An option to generate bindings so consumer methods could be called directly from JavaScript using [wasm-bindgen](https://github.com/rustwasm/wasm-bindgen).\n\n## see also\n\n[mezzenger](https://github.com/zduny/mezzenger)\n\n[remote procedure call](https://en.wikipedia.org/wiki/Remote_procedure_call)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzduny%2Fzzrpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzduny%2Fzzrpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzduny%2Fzzrpc/lists"}