Refactor to use format for http responses
This commit is contained in:
21
style.md
21
style.md
@@ -102,6 +102,27 @@ auto addr = reinterpret_cast<uintptr_t>(ptr); // Pointer to integer conv
|
||||
- **String views** with `std::string_view` to minimize unnecessary copying
|
||||
- **Arena allocation** for efficient memory management (~1ns vs ~20-270ns for malloc)
|
||||
|
||||
### String Formatting
|
||||
- **Always use `format.hpp` functions** - formats directly into arena-allocated memory
|
||||
- **Use `static_format()` for performance-sensitive code** - faster but less flexible than `format()`
|
||||
- **Use `format()` function with arena allocator** for printf-style formatting
|
||||
```cpp
|
||||
// Most performance-sensitive - compile-time optimized concatenation
|
||||
std::string_view response = static_format(arena,
|
||||
"HTTP/1.1 ", status_code, " OK\r\n",
|
||||
"Content-Length: ", body.size(), "\r\n",
|
||||
"\r\n", body);
|
||||
|
||||
// Printf-style formatting - runtime flexible
|
||||
ArenaAllocator& arena = conn.get_arena();
|
||||
std::string_view response = format(arena,
|
||||
"HTTP/1.1 %d OK\r\n"
|
||||
"Content-Length: %zu\r\n"
|
||||
"\r\n%.*s",
|
||||
status_code, body.size(),
|
||||
static_cast<int>(body.size()), body.data());
|
||||
```
|
||||
|
||||
### Complexity Control
|
||||
- **Encapsulation is the main tool for controlling complexity**
|
||||
- **Header files define the interface** - they are the contract with users of your code
|
||||
|
||||
Reference in New Issue
Block a user