mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-11 13:36:13 +03:00
Previously RS handled all the requests in an event loop, leading to issues with connections being started in the middle of other connections being started (and potentially blowing up the stack), ultimately causing requests to be delayed because of other requests. This commit reworks the way we handle these (specifically starting connections) by first serialising the requests, and then performing them in multiple threads concurrently; which yields a significant loading performance and reliability increase.
45 lines
1.7 KiB
CMake
45 lines
1.7 KiB
CMake
set(REQUESTSERVER_SOURCE_DIR ${SERENITY_SOURCE_DIR}/Userland/Services/RequestServer)
|
|
|
|
set(CMAKE_AUTOMOC OFF)
|
|
set(CMAKE_AUTORCC OFF)
|
|
set(CMAKE_AUTOUIC OFF)
|
|
|
|
set(REQUESTSERVER_SOURCES
|
|
${REQUESTSERVER_SOURCE_DIR}/ConnectionFromClient.cpp
|
|
${REQUESTSERVER_SOURCE_DIR}/ConnectionCache.cpp
|
|
${REQUESTSERVER_SOURCE_DIR}/Request.cpp
|
|
${REQUESTSERVER_SOURCE_DIR}/GeminiRequest.cpp
|
|
${REQUESTSERVER_SOURCE_DIR}/GeminiProtocol.cpp
|
|
${REQUESTSERVER_SOURCE_DIR}/HttpRequest.cpp
|
|
${REQUESTSERVER_SOURCE_DIR}/HttpProtocol.cpp
|
|
${REQUESTSERVER_SOURCE_DIR}/HttpsRequest.cpp
|
|
${REQUESTSERVER_SOURCE_DIR}/HttpsProtocol.cpp
|
|
${REQUESTSERVER_SOURCE_DIR}/Protocol.cpp
|
|
)
|
|
|
|
if (ANDROID)
|
|
add_library(requestserver SHARED
|
|
${REQUESTSERVER_SOURCES}
|
|
../Android/src/main/cpp/RequestServerService.cpp
|
|
../Android/src/main/cpp/LadybirdServiceBaseJNI.cpp
|
|
../Utilities.cpp
|
|
)
|
|
else()
|
|
add_library(requestserver STATIC ${REQUESTSERVER_SOURCES})
|
|
endif()
|
|
|
|
add_executable(RequestServer main.cpp)
|
|
target_link_libraries(RequestServer PRIVATE requestserver)
|
|
|
|
target_include_directories(requestserver PRIVATE ${SERENITY_SOURCE_DIR}/Userland/Services/)
|
|
target_include_directories(requestserver PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/..)
|
|
target_link_libraries(requestserver PUBLIC LibCore LibMain LibCrypto LibFileSystem LibGemini LibHTTP LibIPC LibMain LibTLS LibWebView LibWebSocket LibURL LibThreading)
|
|
if (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
|
|
# Solaris has socket and networking related functions in two extra libraries
|
|
target_link_libraries(requestserver PUBLIC nsl socket)
|
|
endif()
|
|
if (HAIKU)
|
|
# Haiku has networking related functions in the network library
|
|
target_link_libraries(RequestServer PRIVATE network)
|
|
endif()
|