MSAPI is a modular, high-performance C++ library for building Linux-based microservice and macrosystem architectures. It provides internal protocols, utilities, and server logic for efficient, scalable system development.
MSAPI does not depend on any third-party libraries.
To build library follow next simple steps:
cd library/build
cmake .
cmake --build . -j $(nproc)
BUILD_PROFILE variable can be set to choose build type: Debug or Release. See CMakeListsCommonOptions.txt for more details.
Number of bash scripts are available in the bash/ folder to simplify building process. MSAPI_PATH variable should be set to the root of the MSAPI repository.
- Server: Provides communication ability via TCP sockets and current-state model to manage server lifetime;
- Application: Provides customization ability via parameters and current-state model to manage application behavior.
Server provides data to be handled by calling a callback in case if this data is not a part of internal Application protocol.
- Object protocol: Transfers simple copyable objects using stream and filter models.
- Standard protocol: Handles dynamic-size messages as arrays of key-value pairs.
- HTTP protocol: Basic HTTP message parsing and handling.
- Log: Multiple log levels and console/file outputs.
- Time: Time utilities and event scheduling.
- HTML: Parser module.
- JSON: Parser and producer module.
- Table: Data structure.
- Pthread: Module to synchronize threads.
- Bin: Filesystem operations and helpers.
- Helper: Miscellaneous utilities for common tasks.
- Meta: Static enum translation, type helpers, and compile-time utilities.
Unit/end-to-end tests utilities with ability to run servers as daemons.
Manager app for orchestrating custom apps on the same host, with a user-friendly web interface.
This software is licensed under the Polyform Noncommercial License 1.0.0, see LICENSE.md.
You may use, copy, modify, and distribute it for noncommercial purposes only.
For commercial use, please contact: maks.angels@mail.ru
Contributions are welcome!
By contributing to this repository, you agree to the Contributor License Agreement.