https://github.com/newyaroslav/simplenamedpipe
SimpleNamedPipe is a lightweight C++ library for creating and managing asynchronous named pipe servers on Windows.
https://github.com/newyaroslav/simplenamedpipe
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
Last synced: about 5 hours ago
JSON representation
SimpleNamedPipe is a lightweight C++ library for creating and managing asynchronous named pipe servers on Windows.
- Host: GitHub
- URL: https://github.com/newyaroslav/simplenamedpipe
- Owner: NewYaroslav
- License: mit
- Created: 2024-11-18T13:55:49.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2026-07-01T16:23:33.000Z (about 11 hours ago)
- Last Synced: 2026-07-01T18:17:17.353Z (about 9 hours ago)
- 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
- Language: C++
- Homepage:
- Size: 1.07 MB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README-RU.md
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# SimpleNamedPipe

SimpleNamedPipe — легковесная библиотека C++ для создания и управления асинхронными серверами именованных каналов в Windows.
Проект распространяется под лицензией MIT. Полный текст лицензии см. в файле [LICENSE](LICENSE).
## Основные возможности
- асинхронная обработка клиентов через IO Completion Port;
- работа либо в отдельном потоке, либо блокирующе в текущем (параметр `start()`);
- поддержка до 256 одновременных клиентов;
- очередь отправки с ограничением размера и количества сообщений;
- уведомления о событиях через колбэки или класс `ServerEventHandler`;
- лёгкий клиент для MQL5 с опциональными глобальными обратными вызовами.
- клиент MQL5 выполняет чтение/запись синхронно, обновление через метод `update()` например в таймере.
## Быстрый старт
### Простейший сервер
```cpp
#include "SimpleNamedPipe/NamedPipeServer.hpp"
using namespace SimpleNamedPipe;
int main() {
NamedPipeServer server({"ExamplePipe"});
server.on_message = [&server](int id, const std::string& msg) {
server.send_to(id, "Echo: " + msg);
};
server.start(); // запускает сервер в отдельном потоке
std::cin.get(); // ожидание Enter
server.stop();
}
```
### Простейший клиент MQL5
```mql5
#include
NamedPipeClient pipe;
int OnInit() {
pipe.open("ExamplePipe");
EventSetMillisecondTimer(10);
return INIT_SUCCEEDED;
}
void OnDeinit(const int reason) {
EventKillTimer();
}
void OnTimer() {
pipe.update();
if(pipe.connected())
pipe.write("ping");
}
```
## Установка
1. Установите CMake и компилятор (Visual Studio или MinGW).
2. Для сборки библиотеки и примеров выполните `build_all.bat` (или `build_all_mingw.bat` для MinGW).
3. Скрипт `install_mql5.bat` копирует файлы из каталога `MQL5` во все найденные терминалы MetaTrader 5.
## Примеры
Исходники примеров расположены в каталоге `examples`.
- `callback_example.cpp` демонстрирует работу сервера с отдельными коллбэками (`on_connected`, `on_message` и т.д.).
- `universal_event_example.cpp` показывает аналогичную логику, но используя единый обработчик `on_event`.
## Полезные ссылки
- [Нamed Pipe Server using Overlapped I/O](https://learn.microsoft.com/ru-ru/windows/win32/ipc/named-pipe-server-using-overlapped-i-o)
- [Winsock2 Advanced Named Pipe](https://www.winsocketdotnetworkprogramming.com/winsock2programming/winsock2advancednamedpipe15a.html)
- [Основы разработки программ для операционных систем семейств 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)
## Лицензия
SimpleNamedPipe распространяется по лицензии MIT. Подробнее см. файл [LICENSE](LICENSE).