11cmake_minimum_required (VERSION 3.20 )
22
3- option (LINK_STATICALLY "Link statically" OFF )
3+ option (LINK_STATICALLY "Link Boost and OpenSSL statically" OFF )
4+ option (ENABLE_ASAN "Enable AddressSanitizer" OFF )
5+ option (BUILD_SLICK_NET_TESTS "Build tests" ${PROJECT_IS_TOP_LEVEL} )
6+ option (BUILD_SLICK_NET_EXAMPLES "Build examples" ${PROJECT_IS_TOP_LEVEL} )
7+
48if (LINK_STATICALLY)
59 if (MSVC )
610 set (VCPKG_TARGET_TRIPLET x64-windows-static)
@@ -37,7 +41,7 @@ if (slick-shm_FOUND)
3741 message (STATUS "slick-shm: ${slick-shm_VERSION} " )
3842endif ()
3943
40- find_package (slick-queue 1.2.2 CONFIG QUIET )
44+ find_package (slick-queue 1.5.0 CONFIG QUIET )
4145if (NOT slick-queue_FOUND)
4246 message (STATUS "Fetching slick-queue..." )
4347 include (FetchContent )
@@ -46,27 +50,56 @@ if (NOT slick-queue_FOUND)
4650 FetchContent_Declare (
4751 slick-queue
4852 GIT_REPOSITORY https://github.com/SlickQuant/slick-queue.git
49- GIT_TAG v1.4.1 # See https://github.com/SlickQuant/slick-queue/releases for latest version
53+ GIT_TAG v1.5.0 # See https://github.com/SlickQuant/slick-queue/releases for latest version
5054 )
5155 FetchContent_MakeAvailable (slick-queue)
5256else ()
53- message (STATUS "slick-queue: ${slick-queue_VERSION} " )
57+ message (STATUS "Found slick-queue: ${slick-queue_VERSION} " )
58+ endif ()
59+
60+ find_package (slick-stream-buffer 1.0.5 CONFIG QUIET )
61+ if (NOT slick-stream-buffer_FOUND)
62+ message (STATUS "Fetching slick-stream-buffer..." )
63+ include (FetchContent )
64+ set (BUILD_SLICK_STREAM_BUFFER_TESTS OFF CACHE BOOL "" FORCE )
65+ FetchContent_Declare (
66+ slick-stream-buffer
67+ GIT_REPOSITORY https://github.com/SlickQuant/slick-stream-buffer.git
68+ GIT_TAG v1.0.5
69+ )
70+ FetchContent_MakeAvailable (slick-stream-buffer)
71+ else ()
72+ message (STATUS "Found slick-stream-buffer: ${slick-stream-buffer_VERSION} " )
5473endif ()
5574
56- find_package (slick-dynamic-buffer CONFIG QUIET )
75+ find_package (slick-stream-buffer-multiplexer 1.0.1 CONFIG QUIET )
76+ if (NOT slick-stream-buffer-multiplexer_FOUND)
77+ message (STATUS "Fetching slick-stream-buffer-multiplexer..." )
78+ include (FetchContent )
79+ set (BUILD_SLICK_STREAM_BUFFER_MULTIPLEXER_TESTS OFF CACHE BOOL "" FORCE )
80+ FetchContent_Declare (
81+ slick-stream-buffer-multiplexer
82+ GIT_REPOSITORY https://github.com/SlickQuant/slick-stream-buffer-multiplexer.git
83+ GIT_TAG v1.0.1
84+ )
85+ FetchContent_MakeAvailable (slick-stream-buffer-multiplexer)
86+ else ()
87+ message (STATUS "Found slick-stream-buffer-multiplexer: ${slick-stream-buffer-multiplexer_VERSION} " )
88+ endif ()
89+
90+ find_package (slick-dynamic-buffer 1.0.1 CONFIG QUIET )
5791if (NOT slick-dynamic-buffer_FOUND)
5892 message (STATUS "Fetching slick-dynamic-buffer..." )
5993 include (FetchContent )
60- # Disable tests for slick-dynamic-buffer
6194 set (BUILD_SLICK_DYNAMIC_BUFFER_TESTS OFF CACHE BOOL "" FORCE )
6295 FetchContent_Declare (
6396 slick-dynamic-buffer
6497 GIT_REPOSITORY https://github.com/SlickQuant/slick-dynamic-buffer.git
65- GIT_TAG v1.0.0 # See https://github.com/SlickQuant/slick-dynamic-buffer/releases for latest version
98+ GIT_TAG v1.0.1
6699 )
67100 FetchContent_MakeAvailable (slick-dynamic-buffer)
68101else ()
69- message (STATUS "slick-dynamic-buffer: ${slick-dynamic-buffer_VERSION} " )
102+ message (STATUS "Found slick-dynamic-buffer: ${slick-dynamic-buffer_VERSION} " )
70103endif ()
71104
72105message (STATUS "OpenSSL: ${OPENSSL_INCLUDE_DIR} " )
@@ -76,7 +109,8 @@ add_library(slick-net STATIC
76109 src/http.cpp
77110 src/http_stream.cpp
78111 src/websocket.cpp
79- src/websocket_session.cpp
112+ src/websocket_stream_buffer.cpp
113+ src/websocket_stream_buffer_multiplexer.cpp
80114 src/logging.cpp
81115)
82116add_library (slick::net ALIAS slick-net )
@@ -88,7 +122,17 @@ target_include_directories(slick-net PUBLIC
88122 $<BUILD_INTERFACE :${CMAKE_CURRENT_SOURCE_DIR } /include >
89123 $<INSTALL_INTERFACE :include >
90124)
91- target_link_libraries (slick-net PUBLIC slick::queue slick::dynamic_buffer Boost::asio Boost::beast Boost::context OpenSSL::SSL OpenSSL::Crypto )
125+ target_link_libraries (slick-net PUBLIC
126+ slick::queue
127+ slick::stream_buffer
128+ slick::stream_buffer_multiplexer
129+ slick::dynamic_buffer
130+ Boost::asio
131+ Boost::beast
132+ Boost::context
133+ OpenSSL::SSL
134+ OpenSSL::Crypto
135+ )
92136set_target_properties (slick-net PROPERTIES EXPORT_NAME net)
93137
94138
@@ -109,7 +153,6 @@ else()
109153 endif ()
110154endif ()
111155
112- option (ENABLE_ASAN "Enable AddressSanitizer" OFF )
113156if (ENABLE_ASAN)
114157 if (MSVC )
115158 # MSVC AddressSanitizer (requires Visual Studio 2022 17.7+)
@@ -133,7 +176,6 @@ if(ENABLE_ASAN)
133176 endif ()
134177endif ()
135178
136- option (BUILD_SLICK_NET_TESTS "Build tests" ${PROJECT_IS_TOP_LEVEL} )
137179if (BUILD_SLICK_NET_TESTS)
138180 message (STATUS "Building slick-net tests" )
139181 enable_testing ()
@@ -142,7 +184,6 @@ else()
142184 message (STATUS "Skipping slick-net tests" )
143185endif ()
144186
145- option (BUILD_SLICK_NET_EXAMPLES "Build examples" ${PROJECT_IS_TOP_LEVEL} )
146187if (BUILD_SLICK_NET_EXAMPLES)
147188 message (STATUS "Building slick::net examples" )
148189 add_subdirectory (examples )
0 commit comments