A lightweight mordern C++
micro service development framework
- Tag based system logger with support for custom log m_sink
- Memory pool supporting buffer sizes of up to 8912
- Integrates libmill's coroutines which is used as the base library for asynchronous calls
- Dynamic buffer supporting
printf(...)
like functions and stream operator overloads - Zero Copy strings which can be help speed up operations on strings
- Integrates IOD framework which is a great tool when it comes to meta programming
- Sockets (minimal SSL support) API using coroutines
- HTTP/1.1 server
- Support for static and dynamic route handling
- Static compilation of static routes
- Support for Middlewares registered at compilation time via generics
- SQL/Database middleware included as a template
- File server support
- Supported mime types can be extended and customized
- Smaller files are cached in memory, larger files are memory mapped
- Support for
sendfile
system call if enabled. - HTTP cache headers supported
- Range requests parsing supported
- Route attributes
- Response content type decoded from type of response if returned
- Request form parser, multi-part & url-encoded forms supported
- Disk offload for large body (Partially supported or not tested)
- HTTP/1.1 Client
- Session based HTTP client
- Easy to use API
- Customizable response readers
- SSL support
- Web Socket server support (Version 13) through HTTP upgrade.
- Database support
- Generic SQL ORM
- SQLite3 driver
- PGSQL client
- Asynchronous or non-blocking in a coroutine way
- Prepared statements
- Cached connections
- JWT creation and decoding
- Simple authentication middleware issuing web tokens (Not tested)
When building or developing an application that uses this project on ubuntu, the following libraries should be installed.
- SQLite
sudo apt-get install sqlite3 libsqlite3-dev
- PostgresSQL
sudo apt-get install libpq-dev postgresql postgresql-server-dev-all
- UUID
sudo apt-get install uuid-dev
- OpenSSL
sudo apt-get install openssl libssl-dev