Pcornat
23246d0d9d
Compilation and linker flags for spdlog are changed to be usable with clang and the project. Another default logger is made in the main.cpp Correction in README.md and format.
46 lines
1.5 KiB
Markdown
46 lines
1.5 KiB
Markdown
# A C++ Gemini server
|
|
|
|
## Introduction
|
|
|
|
As I saw other implementations in Rust but no C++ to compete, I felt that I had to do something ;-). It is also a chance for me and a friend (
|
|
Brumaire) to practice C++ and to try to get as much performance as possible (my speciality is HPC so… Yeah).
|
|
|
|
## Design
|
|
|
|
I use PlantUML to do the class diagram for the design. It's a work in progress.
|
|
|
|
## Goal
|
|
|
|
What we want is a high performance server using asynchrony at first, and then maybe multi-threading to have the maximum possible performance.
|
|
|
|
## Configuration
|
|
|
|
**WIP**
|
|
The configuration of the server is made through a JSON file `config.json`. The JSON parser is [simdjson](https://github.com/simdjson/simdjson)
|
|
directly integrated in our source code.
|
|
|
|
### Structure of the file
|
|
|
|
- content
|
|
- path : string, folder to the content of your site.
|
|
- cache
|
|
- enable_cache: bool, to enable cache of files or not
|
|
- cache_size : unsigned int, the maximum size in bytes to put in cache
|
|
- ssl
|
|
- pem_path : string
|
|
- cert_path : string
|
|
|
|
## Dependencies
|
|
|
|
It uses a bundled version of `spdlog` as a git submodule, but it does not use the `fmt` lib that is inside `spdlog` (you can still change it in the
|
|
CMakeLists).
|
|
|
|
## Documentation
|
|
|
|
The doc of the code is made with [doxygen](https://www.doxygen.nl/), the `Doxyfile` is at the root of the repo.
|
|
|
|
## TODO/features
|
|
|
|
* Possibility of an applicative gateway (like CGI for example)
|
|
* Content in RAM cache
|
|
* Asynchronous (boost ASIO deals with it) |