{"id":22606114,"url":"https://github.com/newyaroslav/simplenamedpipe","last_synced_at":"2026-07-01T22:31:16.106Z","repository":{"id":263546070,"uuid":"890397557","full_name":"NewYaroslav/SimpleNamedPipe","owner":"NewYaroslav","description":"SimpleNamedPipe is a lightweight C++ library for creating and managing asynchronous named pipe servers on Windows.","archived":false,"fork":false,"pushed_at":"2026-07-01T16:23:33.000Z","size":1124,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-07-01T18:17:17.353Z","etag":null,"topics":["cpp","cpp11","metatrader","mql5","mql5-api","mt5","mt5-api","named-pipe","named-pipes","pipe-client","pipe-server","server","simple-named-pipe-server","simplenamedpipe","win32","win32-api"],"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/NewYaroslav.png","metadata":{"files":{"readme":"README-RU.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2024-11-18T13:55:49.000Z","updated_at":"2025-11-05T16:10:00.000Z","dependencies_parsed_at":"2025-10-27T21:15:26.517Z","dependency_job_id":"5d17b690-3edb-4b38-ac61-573003320a79","html_url":"https://github.com/NewYaroslav/SimpleNamedPipe","commit_stats":null,"previous_names":["newyaroslav/simplenamedpipe"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/NewYaroslav/SimpleNamedPipe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2FSimpleNamedPipe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2FSimpleNamedPipe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2FSimpleNamedPipe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2FSimpleNamedPipe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NewYaroslav","download_url":"https://codeload.github.com/NewYaroslav/SimpleNamedPipe/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NewYaroslav%2FSimpleNamedPipe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35025980,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-01T02:00:05.325Z","response_time":130,"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":["cpp","cpp11","metatrader","mql5","mql5-api","mt5","mt5-api","named-pipe","named-pipes","pipe-client","pipe-server","server","simple-named-pipe-server","simplenamedpipe","win32","win32-api"],"created_at":"2024-12-08T14:12:30.584Z","updated_at":"2026-07-01T22:31:16.088Z","avatar_url":"https://github.com/NewYaroslav.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SimpleNamedPipe\n\u003cimg src=\"docs/logo-1024x680px.png\" alt=\"Logo\" width=\"600\"/\u003e\n\nSimpleNamedPipe — легковесная библиотека C++ для создания и управления асинхронными серверами именованных каналов в Windows.\n\nПроект распространяется под лицензией MIT. Полный текст лицензии см. в файле [LICENSE](LICENSE).\n\n\n## Основные возможности\n\n- асинхронная обработка клиентов через IO Completion Port;\n- работа либо в отдельном потоке, либо блокирующе в текущем (параметр `start()`);\n- поддержка до 256 одновременных клиентов;\n- очередь отправки с ограничением размера и количества сообщений;\n- уведомления о событиях через колбэки или класс `ServerEventHandler`;\n- лёгкий клиент для MQL5 с опциональными глобальными обратными вызовами.\n- клиент MQL5 выполняет чтение/запись синхронно, обновление через метод `update()` например в таймере.\n\n## Быстрый старт\n\n### Простейший сервер\n\n```cpp\n#include \"SimpleNamedPipe/NamedPipeServer.hpp\"\nusing namespace SimpleNamedPipe;\n\nint main() {\n    NamedPipeServer server({\"ExamplePipe\"});\n\n    server.on_message = [\u0026server](int id, const std::string\u0026 msg) {\n        server.send_to(id, \"Echo: \" + msg);\n    };\n\n    server.start(); // запускает сервер в отдельном потоке\n    std::cin.get(); // ожидание Enter\n    server.stop();\n}\n```\n\n### Простейший клиент MQL5\n\n```mql5\n#include \u003cSimpleNamedPipe\\NamedPipeClient.mqh\u003e\n\nNamedPipeClient pipe;\n\nint OnInit() {\n    pipe.open(\"ExamplePipe\");\n    EventSetMillisecondTimer(10);\n    return INIT_SUCCEEDED;\n}\n\nvoid OnDeinit(const int reason) {\n    EventKillTimer();\n}\n\nvoid OnTimer() {\n    pipe.update();\n    if(pipe.connected())\n        pipe.write(\"ping\");\n}\n```\n\n## Установка\n\n1. Установите CMake и компилятор (Visual Studio или MinGW).\n2. Для сборки библиотеки и примеров выполните `build_all.bat` (или `build_all_mingw.bat` для MinGW).\n3. Скрипт `install_mql5.bat` копирует файлы из каталога `MQL5` во все найденные терминалы MetaTrader 5.\n\n## Примеры\n\nИсходники примеров расположены в каталоге `examples`.\n- `callback_example.cpp` демонстрирует работу сервера с отдельными коллбэками (`on_connected`, `on_message` и т.д.).\n- `universal_event_example.cpp` показывает аналогичную логику, но используя единый обработчик `on_event`.\n\n## Полезные ссылки\n\n- [Нamed Pipe Server using Overlapped I/O](https://learn.microsoft.com/ru-ru/windows/win32/ipc/named-pipe-server-using-overlapped-i-o)\n- [Winsock2 Advanced Named Pipe](https://www.winsocketdotnetworkprogramming.com/winsock2programming/winsock2advancednamedpipe15a.html)\n- [Основы разработки программ для операционных систем семейств Windows и Linux](https://repo.ssau.ru/bitstream/Uchebnye-izdaniya/Operacionnye-sistemy-Osnovy-razrabotki-programm-dlya-operacionnyh-sistem-semeistv-Windows-i-Linux-109472/1/978-5-7883-2035-9_%202024.pdf)\n\n## Лицензия\n\nSimpleNamedPipe распространяется по лицензии MIT. Подробнее см. файл [LICENSE](LICENSE).\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewyaroslav%2Fsimplenamedpipe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnewyaroslav%2Fsimplenamedpipe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnewyaroslav%2Fsimplenamedpipe/lists"}