generated from administrator/template_project
67 lines
1.5 KiB
Markdown
67 lines
1.5 KiB
Markdown
# 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
|