{"id":16693574,"url":"https://github.com/nickelpro/make-it-async-examples","last_synced_at":"2026-02-19T06:31:23.750Z","repository":{"id":242974306,"uuid":"811107869","full_name":"nickelpro/make-it-async-examples","owner":"nickelpro","description":"ASIO Examples","archived":false,"fork":false,"pushed_at":"2024-06-06T11:32:06.000Z","size":22,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-06T17:19:01.728Z","etag":null,"topics":["asio","asynchronous","cpp20"],"latest_commit_sha":null,"homepage":"https://blog.vito.nyc/posts/make-it-async/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nickelpro.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-06T00:23:14.000Z","updated_at":"2024-06-15T13:34:59.000Z","dependencies_parsed_at":"2024-06-06T01:49:57.827Z","dependency_job_id":null,"html_url":"https://github.com/nickelpro/make-it-async-examples","commit_stats":null,"previous_names":["nickelpro/make-it-async-examples"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nickelpro/make-it-async-examples","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickelpro%2Fmake-it-async-examples","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickelpro%2Fmake-it-async-examples/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickelpro%2Fmake-it-async-examples/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickelpro%2Fmake-it-async-examples/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nickelpro","download_url":"https://codeload.github.com/nickelpro/make-it-async-examples/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nickelpro%2Fmake-it-async-examples/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279169048,"owners_count":26118395,"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","status":"online","status_checked_at":"2025-10-16T02:00:06.019Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["asio","asynchronous","cpp20"],"created_at":"2024-10-12T16:31:32.763Z","updated_at":"2025-10-16T08:11:39.046Z","avatar_url":"https://github.com/nickelpro.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \"Make it Async\" Examples\n\nThis is a set of examples for [a blog post](https://blog.vito.nyc/posts/make-it-async/)\nI wrote about building asynchronous resources in ASIO. It also serves as maybe\nan interesting case study of ASIO's support for C++20 coroutines, or perhaps for\nintegrating C++ I/O with Python application logic. It's got a little of\neverything.\n\nThe goal was to present a quasi-practical integration, so for example there's\ncorrect handling of SIGINT passthrough and restoration, but _only_ SIGINT.\nThere's correct error detection for various operations, but the result of any\nerror is an unlogged drop of the current connection.\n\nThe figures are all located in their respective directories under the `src/`\nfolder. **Figure1** and **AppendixA** are plain C++ programs, the rest are all\nimplemented as Python extension modules. After compiling a Python extension\nmodule, it can be run by placing it in the same folder as its respective Python\nscript and running the Python script.\n\nAll of the figures can be interacted with via the provided **Client.py** script,\nwhich is just a read-write-print loop, as all of the figures are merely\nvariations on an echo server.\n\n## License\n\nThis source code (and associated build/test/utility files) is released into the\npublic domain via CC0-1.0, see `License` for details.\n\nI (Vito Gamberini) hold no patents and have no knowledge of any patented\ntechniques used by these examples. However, some organizations refuse to\nincorporate or distribute public domain code due to patent concerns, for this\nreason these examples are additionally licensed for use under Zlib, see\n`UsageLicense` for details.\n\nAs the source code itself is public domain, there is no need to retain licensing\ninformation in full or partial source code distributions unless the patent\nconcerns are of significance to you.\n\nThe purpose in using these well known legal texts is that they are widely\ntrusted and understood by the open source community. A bespoke legal text might\nlimit usage by particularly skittish developers or organizations. However, I\nwant to make my intentions clear in plain English as well:\n\n**Do what you want with this stuff. There are zero restrictions on the use of\nthis code in any context.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickelpro%2Fmake-it-async-examples","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnickelpro%2Fmake-it-async-examples","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnickelpro%2Fmake-it-async-examples/lists"}