# test_server A C++ HTTP server using the PIP library. ## Build & Run ```bash mkdir build && cd build cmake .. make ./test_server ``` ## Key Facts - **C++ Standard**: C++11 (enforced) - **Build System**: CMake (generates `compile_commands.json` automatically) - **Build Directory**: `build/` (ignored in git) - **PIP Library**: Installed at `/usr/local/include/pip` - **Entrypoint**: `src/main.cpp` ## Dependencies The project uses a custom **PIP C++ library** (not Python pip). Required components: - `PIP::Console` - Console output (`piCout`) - `PIP::HTTPServer` - HTTP server functionality - `PIP::IOUtils` - I/O utilities - `PIP::ClientServer` - Client/server infrastructure ## Code Style - **Formatter**: clang-format (config in `.clang-format`) - **Indent**: Tabs, width 4 - **Column Limit**: 140 characters - **Encoding**: UTF-8 Run formatter: ```bash clang-format -i src/*.cpp src/*.h ``` ## Architecture The server creates a `PIKbdListener` that: - Captures F10 key press for graceful exit - Starts an HTTP server on `0.0.0.0:8888` - Waits for exit signal via `WAIT_FOR_EXIT` macro ## API Endpoints | Endpoint | Method | Description | |----------|--------|-------------| | `/api/connect` | GET | Connects TCP client to 127.0.0.1:1234 | | `/api/disconnect` | GET | Disconnects TCP client | ## Testing Use `reproduce_crash.sh` to test the TCP connect/disconnect functionality: ```bash ./reproduce_crash.sh ``` ## Notes - Qt Creator is the primary IDE (`.qtcreator/` config present) - No unit tests or CI configured