From 91c26daa4e3b92cfb8b4a0daf75c7caf5656d3ba Mon Sep 17 00:00:00 2001 From: James Yab Date: Thu, 1 Jan 2026 20:41:23 -0500 Subject: [PATCH 1/2] Refactor project structure to separate the server library and demo --- CMakeLists.txt | 15 ++++----------- demo/CMakeLists.txt | 19 +++++++++++++++++++ {src => demo}/main.cpp | 0 test/HttpParserTest.cpp | 2 +- 4 files changed, 24 insertions(+), 12 deletions(-) create mode 100644 demo/CMakeLists.txt rename {src => demo}/main.cpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1775616..d7dda67 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,9 +1,10 @@ cmake_minimum_required(VERSION 3.15) -project(http_server VERSION 1.0 LANGUAGES C CXX) +project(http_server_library VERSION 1.0 LANGUAGES C CXX) + +add_subdirectory(demo) set(LIBRARY "server_library") set(TEST_TARGET "server_tests_bin") -set(TARGET "server_impl_bin") set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Override Debug flags @@ -17,7 +18,7 @@ find_package(Threads REQUIRED) # server library -add_library(${LIBRARY} +add_library(${LIBRARY} STATIC src/HttpServer.cpp src/HttpParser.cpp src/PathParams.cpp @@ -47,14 +48,6 @@ include(GoogleTest) gtest_discover_tests(${TEST_TARGET}) -# server implementation executable -add_executable(${TARGET} - src/main.cpp -) -target_link_options(${TARGET} PRIVATE -O0 -g --coverage) -target_link_libraries(${TARGET} PRIVATE ${LIBRARY}) - - # coverage target # find required tools find_program(LCOV lcov REQUIRED) diff --git a/demo/CMakeLists.txt b/demo/CMakeLists.txt new file mode 100644 index 0000000..ab593ff --- /dev/null +++ b/demo/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.15) +project(server_demo VERSION 1.0 LANGUAGES C CXX) + +set(LIBRARY "server_library") +set(TARGET "server_demo_bin") +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + +# Override Debug flags +set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 --coverage") +set(CMAKE_C_FLAGS_DEBUG "-g -O0 --coverage") +set(CMAKE_EXE_LINKER_FLAGS_DEBUG "--coverage") +set(CMAKE_SHARED_LINKER_FLAGS_DEBUG "--coverage") + + +# server implementation executable +add_executable(${TARGET} + main.cpp +) +target_link_libraries(${TARGET} PRIVATE ${LIBRARY}) diff --git a/src/main.cpp b/demo/main.cpp similarity index 100% rename from src/main.cpp rename to demo/main.cpp diff --git a/test/HttpParserTest.cpp b/test/HttpParserTest.cpp index 6fe9311..7c9f9a8 100644 --- a/test/HttpParserTest.cpp +++ b/test/HttpParserTest.cpp @@ -1,5 +1,5 @@ #include -#include "../include/HttpParser.h" +#include "HttpParser.h" #include #include From 013773837e957bf88b0bb980a7851b79a332c764 Mon Sep 17 00:00:00 2001 From: James Yab Date: Thu, 1 Jan 2026 20:41:50 -0500 Subject: [PATCH 2/2] Update README to reflect improved file structure and demo execution --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0d38b57..5b44e14 100644 --- a/README.md +++ b/README.md @@ -139,8 +139,9 @@ try { . ├── src/ # Server implementation ├── include/ # Public headers -├── tests/ # gtest-based test suite -├── cmake/ # CMake helpers +├── test/ # gtest-based test suite +├── demo/ # demo of the library implementation +├── benchmarks/ # k6 performance benchmark outputs with a node server comparison ├── .github/ # GitHub Actions workflows └── README.md ``` @@ -186,16 +187,16 @@ conan build . --build=missing -s build_type=Debug --- -## Running the Server +## Running the Server Demo Command to run the HTTP server implementation example: ```bash # in release mode -./build/Release/server_impl_bin +./build/Release/demo/server_demo_bin # in debug mode -./build/Debug/server_impl_bin +./build/Debug/demo/server_demo_bin ``` ---