From e0e7ebcf295cd1c80d1d9a1189a15b0770c879a4 Mon Sep 17 00:00:00 2001 From: Florian Albrechtskirchinger Date: Mon, 17 Feb 2025 08:51:28 +0100 Subject: [PATCH] Make poll() the default select() can still be enabled by defining CPPHTTPLIB_USE_SELECT. --- Dockerfile | 2 +- README.md | 6 +++--- httplib.h | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Dockerfile b/Dockerfile index 654845b..4abae17 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,7 +2,7 @@ FROM yhirose4dockerhub/ubuntu-builder AS builder WORKDIR /build COPY httplib.h . COPY docker/main.cc . -RUN g++ -std=c++23 -static -o server -O2 -I. -DCPPHTTPLIB_USE_POLL main.cc && strip server +RUN g++ -std=c++23 -static -o server -O2 -I. main.cc && strip server FROM scratch COPY --from=builder /build/server /server diff --git a/README.md b/README.md index fc4b537..2a6cbfa 100644 --- a/README.md +++ b/README.md @@ -872,10 +872,10 @@ res->body; // Compressed data ``` -Use `poll` instead of `select` ------------------------------- +Use `select()` instead of `poll()` +---------------------------------- -`select` system call is used as default since it's more widely supported. If you want to let cpp-httplib use `poll` instead, you can do so with `CPPHTTPLIB_USE_POLL`. +cpp-httplib defaults to the widely supported `poll()` system call. If your OS lacks support for `poll()`, define `CPPHTTPLIB_USE_SELECT` to use `select()` instead. Unix Domain Socket Support -------------------------- diff --git a/httplib.h b/httplib.h index edea018..b95b8c2 100644 --- a/httplib.h +++ b/httplib.h @@ -145,6 +145,12 @@ #define CPPHTTPLIB_LISTEN_BACKLOG 5 #endif +#if !defined(CPPHTTPLIB_USE_POLL) && !defined(CPPHTTPLIB_USE_SELECT) +#define CPPHTTPLIB_USE_POLL +#elif defined(CPPHTTPLIB_USE_POLL) && defined(CPPHTTPLIB_USE_SELECT) +#error "CPPHTTPLIB_USE_POLL and CPPHTTPLIB_USE_SELECT are mutually exclusive" +#endif + /* * Headers */