Skip to content

Commit f947ded

Browse files
committed
Merge branch 'master' of github.com:cpp-netlib/cpp-netlib
2 parents 99818b5 + 8df1f1c commit f947ded

File tree

12 files changed

+169
-59
lines changed

12 files changed

+169
-59
lines changed

CMakeLists.txt

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ option( CPP-NETLIB_ALWAYS_LOGGING "Allow cpp-netlib to log debug messages even i
1515
option( CPP-NETLIB_DISABLE_LOGGING "Disable logging definitely, no logging code will be generated or compiled." OFF )
1616
option( CPP-NETLIB_DISABLE_LIBCXX "Disable using libc++ when compiling with clang." OFF )
1717

18-
1918
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
2019
find_package( ICU )
2120

@@ -39,8 +38,6 @@ if(CMAKE_BUILD_TYPE MATCHES Debug)
3938
add_definitions(-DNETWORK_DEBUG)
4039
endif()
4140

42-
43-
4441
if (OPENSSL_FOUND)
4542
add_definitions(-DNETWORK_ENABLE_HTTPS)
4643
endif()
@@ -49,7 +46,7 @@ if (${CMAKE_CXX_COMPILER_ID} MATCHES GNU)
4946
INCLUDE(CheckCXXCompilerFlag)
5047
CHECK_CXX_COMPILER_FLAG(-std=c++11 HAVE_STD11)
5148
if (HAVE_STD11)
52-
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} "-std=c++11 -Wall")
49+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -Wall")
5350
else()
5451
message(FATAL_ERROR "No advanced standard C++ support (-std=c++11 not defined).")
5552
endif()
@@ -73,8 +70,8 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES Clang)
7370
-DASIO_HAS_STD_ADDRESSOFF -DASIO_HAS_STD_FUNCTION -DASIO_HAS_STD_TYPE_TRAITS)
7471
endif()
7572

76-
message("C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
77-
message("C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
73+
message(STATUS "C++ Compiler ID: ${CMAKE_CXX_COMPILER_ID}")
74+
message(STATUS "C++ Flags: ${CMAKE_CXX_FLAGS} link flags: ${CMAKE_CXX_LINK_FLAGS}")
7875
if (Boost_FOUND)
7976
if (MSVC)
8077
add_definitions(-D_SCL_SECURE_NO_WARNINGS)
@@ -95,6 +92,17 @@ message(STATUS " CPP-NETLIB_DISABLE_LOGGING: ${CPP-NETLIB_DISABLE_LOGGING}\t(
9592
message(STATUS " CPP-NETLIB_DISABLE_LIBCXX: ${CPP-NETLIB_DISABLE_LIBCXX}\t(Disable using libc++ when building with clang: ON, OFF)")
9693
message(STATUS "CMake build options selected:")
9794

95+
# Takes one or more lists as parameter and prepends the prefix to every element.
96+
function(prependToElements prefix)
97+
foreach(list ${ARGN} ) # iterate over lists
98+
set(newlist "")
99+
foreach(ele ${${list}} ) # iterate over the elements
100+
set(newlist ${newlist} "${prefix}${ele}")
101+
endforeach(ele)
102+
set(${list} ${newlist} PARENT_SCOPE) # replace the original list
103+
endforeach(list)
104+
endfunction(prependToElements)
105+
98106
############################################################################
99107
#
100108
# The code following this point is for the new directory structure
@@ -130,11 +138,13 @@ endif()
130138

131139
if(CPP-NETLIB_BUILD_SINGLE_LIB)
132140
include_directories(
141+
${CMAKE_CURRENT_SOURCE_DIR}/config/src
133142
${CMAKE_CURRENT_SOURCE_DIR}/concurrency/src
134143
${CMAKE_CURRENT_SOURCE_DIR}/http/src
135144
${CMAKE_CURRENT_SOURCE_DIR}/logging/src
136145
${CMAKE_CURRENT_SOURCE_DIR}/message/src
137146
${CMAKE_CURRENT_SOURCE_DIR}/uri/src
147+
${CMAKE_CURRENT_SOURCE_DIR}
138148
)
139149
endif()
140150

@@ -157,6 +167,7 @@ if(CPP-NETLIB_BUILD_SINGLE_LIB)
157167
${CPP-NETLIB_LOGGING_SRCS}
158168
${CPP-NETLIB_HTTP_CLIENT_SRCS}
159169
${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS}
170+
${CPP-NETLIB_HTTP_SERVER_SRCS}
160171
${CPP-NETLIB_HTTP_MESSAGE_SRCS}
161172
${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS}
162173
${CPP-NETLIB_CONSTANTS_SRCS}

concurrency/src/CMakeLists.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@
55

66
include_directories(${CPP-NETLIB_SOURCE_DIR}/concurrency/src)
77

8-
set(CPP-NETLIB_CONCURRENCY_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/thread_pool.cpp)
8+
set(CPP-NETLIB_CONCURRENCY_SRCS
9+
thread_pool.cpp)
10+
911
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
1012
add_library(cppnetlib-concurrency ${CPP-NETLIB_CONCURRENCY_SRCS})
1113
endif()
1214

15+
# prepend current directory to make paths absolute
16+
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
17+
CPP-NETLIB_CONCURRENCY_SRCS )
18+
1319
# propagate sources to parent directory for one-lib-build
1420
set(CPP-NETLIB_CONCURRENCY_SRCS ${CPP-NETLIB_CONCURRENCY_SRCS} PARENT_SCOPE)

config/src/network/config.hpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
// Copyright (c) Glyn Matthews 2012, 2013.
2+
// Copyright 2012 Dean Michael Berris <dberris@google.com>
3+
// Copyright 2012 Google, Inc.
4+
// Distributed under the Boost Software License, Version 1.0.
5+
// (See accompanying file LICENSE_1_0.txt or copy at
6+
// http://www.boost.org/LICENSE_1_0.txt)
7+
8+
9+
#ifndef NETWORK_CONFIG_INC
10+
#define NETWORK_CONFIG_INC
11+
12+
#include <boost/config.hpp>
13+
#include <boost/detail/workaround.hpp>
14+
15+
#if defined(BOOST_ALL_DYN_LINK)
16+
#define NETWORK_DECL BOOST_SYMBOL_EXPORT
17+
#else
18+
#define NETWORK_DECL
19+
#endif // defined(BOOST_ALL_DYN_LINK)
20+
21+
#if defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)
22+
#define NETWORK_DEFAULTED_FUNCTION {}
23+
#else
24+
#define NETWORK_DEFAULTED_FUNCTION = default
25+
#endif // defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)
26+
27+
#if defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
28+
#define NETWORK_DELETED_FUNCTION {}
29+
#else
30+
#define NETWORK_DELETED_FUNCTION = delete
31+
#endif // defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
32+
33+
#if defined(BOOST_NO_CXX11_NOEXCEPT)
34+
#define NETWORK_NOEXCEPT throw()
35+
#else
36+
#define NETWORK_NOEXCEPT noexcept
37+
#endif // defined(BOOST_NO_CXX11_NOEXCEPT)
38+
39+
#if defined(BOOST_NO_CXX11_OVERRIDE)
40+
#define NETWORK_OVERRIDE
41+
#else
42+
#define NETWORK_OVERRIDE override
43+
#endif // defined(BOOST_NO_CXX11_OVERRIDE)
44+
45+
#endif // NETWORK_CONFIG_INC

contrib/http_examples/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ if (OPENSSL_FOUND)
1313
include_directories(${OPENSSL_INCLUDE_DIR})
1414
endif (OPENSSL_FOUND)
1515

16-
if( NOT CPP-NETLIB_DISABLE_LOGGING )
16+
set( CPP-NETLIB_LOGGING_LIB "" )
17+
if( NOT CPP-NETLIB_DISABLE_LOGGING AND NOT CPP-NETLIB_BUILD_SINGLE_LIB)
1718
set( CPP-NETLIB_LOGGING_LIB cppnetlib-logging )
1819
endif()
1920

contrib/http_examples/http/hello_world_client.cpp

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,16 @@ int main(int argc, char* argv[]) {
2323
return 1;
2424
}
2525

26+
/*<< Creates the client. >>*/
27+
http::client client;
28+
2629
try {
27-
/*<< Creates the client. >>*/
28-
http::client client;
2930
/*<< Creates a request using a URI supplied on the command
3031
line. >>*/
3132
http::client::request request(argv[1]);
33+
/*<< Explicitly set a Connection: close header to the
34+
request. >>*/
35+
request << network::header("Connection", "close");
3236
/*<< Gets a response from the HTTP server. >>*/
3337
http::client::response response = client.get(request);
3438
/*<< Prints the response body to the console. >>*/

http/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,5 @@ set(CPP-NETLIB_HTTP_MESSAGE_SRCS ${CPP-NETLIB_HTTP_MESSAGE_SRCS} PARENT_SCOPE)
1515
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS} PARENT_SCOPE)
1616
set(CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS} PARENT_SCOPE)
1717
set(CPP-NETLIB_HTTP_CLIENT_SRCS ${CPP-NETLIB_HTTP_CLIENT_SRCS} PARENT_SCOPE)
18+
set(CPP-NETLIB_HTTP_SERVER_SRCS ${CPP-NETLIB_HTTP_SERVER_SRCS} PARENT_SCOPE)
1819
set(CPP-NETLIB_CONSTANTS_SRCS ${CPP-NETLIB_CONSTANTS_SRCS} PARENT_SCOPE)

http/src/CMakeLists.txt

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ include_directories(${OPENSSL_INCLUDE_DIR})
1919
endif()
2020

2121
set(CPP-NETLIB_HTTP_MESSAGE_SRCS
22-
${CMAKE_CURRENT_SOURCE_DIR}/http/request.cpp
23-
${CMAKE_CURRENT_SOURCE_DIR}/http/response.cpp)
22+
http/request.cpp
23+
http/response.cpp)
24+
2425
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
2526
add_library(cppnetlib-http-message ${CPP-NETLIB_HTTP_MESSAGE_SRCS})
2627
add_dependencies(cppnetlib-http-message
@@ -30,41 +31,49 @@ if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
3031
cppnetlib-message)
3132
endif()
3233

33-
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/http/message/wrappers.cpp)
34+
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS
35+
http/message/wrappers.cpp)
36+
3437
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
3538
add_library(cppnetlib-http-message-wrappers ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS})
3639
endif()
3740

3841
set(CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS
39-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connections.cpp
40-
${CMAKE_CURRENT_SOURCE_DIR}/http/simple_connection_manager.cpp
41-
${CMAKE_CURRENT_SOURCE_DIR}/http/simple_connection_factory.cpp
42-
${CMAKE_CURRENT_SOURCE_DIR}/http/connection_delegate_factory.cpp
43-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_resolver_delegate.cpp
44-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_resolver_delegate_factory.cpp
45-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connection_delegates.cpp
46-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connection_factory.cpp
47-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_async_resolver.cpp
48-
${CMAKE_CURRENT_SOURCE_DIR}/http/client_connection_normal.cpp)
42+
http/client_connections.cpp
43+
http/simple_connection_manager.cpp
44+
http/simple_connection_factory.cpp
45+
http/connection_delegate_factory.cpp
46+
http/client_resolver_delegate.cpp
47+
http/client_resolver_delegate_factory.cpp
48+
http/client_connection_delegates.cpp
49+
http/client_connection_factory.cpp
50+
http/client_async_resolver.cpp
51+
http/client_connection_normal.cpp)
52+
4953
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
5054
add_library(cppnetlib-http-client-connections ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS})
5155
endif()
5256

53-
set(CPP-NETLIB_CONSTANTS_SRCS constants.cpp)
57+
set(CPP-NETLIB_CONSTANTS_SRCS
58+
constants.cpp)
59+
5460
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
5561
add_library(cppnetlib-constants ${CPP-NETLIB_CONSTANTS_SRCS})
5662
endif()
5763

5864
# Server implementation files.
5965
set(CPP-NETLIB_HTTP_SERVER_SRCS
60-
${CMAKE_CURRENT_SOURCE_DIR}/http/server/session.cpp http/server/simple_sessions.cpp
61-
${CMAKE_CURRENT_SOURCE_DIR}/http/server/dynamic_dispatcher.cpp)
66+
http/server/session.cpp
67+
http/server/simple_sessions.cpp
68+
http/server/dynamic_dispatcher.cpp)
69+
6270
if (NOT CPP-NETLIB_BUILD_SINGLE_LIB)
6371
add_library(cppnetlib-http-server ${CPP-NETLIB_HTTP_SERVER_SRCS})
6472
endif()
6573

6674
set(CPP-NETLIB_HTTP_CLIENT_SRCS
67-
${CMAKE_CURRENT_SOURCE_DIR}/http/client.cpp)
75+
http/client.cpp)
76+
6877
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
6978
add_library(cppnetlib-http-client ${CPP-NETLIB_HTTP_CLIENT_SRCS})
7079
add_dependencies(cppnetlib-http-client
@@ -92,9 +101,19 @@ if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
92101
)
93102
endif()
94103

104+
# prepend current directory to make paths absolute
105+
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
106+
CPP-NETLIB_HTTP_MESSAGE_SRCS
107+
CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS
108+
CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS
109+
CPP-NETLIB_CONSTANTS_SRCS
110+
CPP-NETLIB_HTTP_SERVER_SRCS
111+
CPP-NETLIB_HTTP_CLIENT_SRCS )
112+
95113
# propagate sources to parent directory for one-lib-build
96114
set(CPP-NETLIB_HTTP_MESSAGE_SRCS ${CPP-NETLIB_HTTP_MESSAGE_SRCS} PARENT_SCOPE)
97115
set(CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS ${CPP-NETLIB_HTTP_MESSAGE_WRAPPERS_SRCS} PARENT_SCOPE)
98116
set(CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS ${CPP-NETLIB_HTTP_CLIENT_CONNECTIONS_SRCS} PARENT_SCOPE)
99117
set(CPP-NETLIB_HTTP_CLIENT_SRCS ${CPP-NETLIB_HTTP_CLIENT_SRCS} PARENT_SCOPE)
118+
set(CPP-NETLIB_HTTP_SERVER_SRCS ${CPP-NETLIB_HTTP_SERVER_SRCS} PARENT_SCOPE)
100119
set(CPP-NETLIB_CONSTANTS_SRCS ${CPP-NETLIB_CONSTANTS_SRCS} PARENT_SCOPE)

http/src/http/server/simple_sessions.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
#include <boost/utility/string_ref.hpp>
1313
#include <atomic>
1414
#include <thread>
15+
#include <mutex>
1516

1617
namespace network {
1718
namespace http {

http/test/CMakeLists.txt

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,41 @@ if (OPENSSL_FOUND)
1717
add_definitions(-DNETWORK_ENABLE_HTTPS)
1818
endif()
1919

20+
21+
set( CPPNETLIB_LIBRARIES cppnetlib )
22+
set( CPPNETLIB_CLIENT_LIBRARIES ${CPPNETLIB_LIBRARIES} )
23+
set( CPPNETLIB_SERVER_LIBRARIES ${CPPNETLIB_LIBRARIES} )
24+
if(NOT CPP-NETLIB_BUILD_SINGLE_LIB)
25+
set( CPPNETLIB_LIBRARIES
26+
cppnetlib-message
27+
cppnetlib-message-wrappers
28+
cppnetlib-http-message
29+
cppnetlib-http-message-wrappers
30+
cppnetlib-uri
31+
cppnetlib-constants )
32+
33+
set( CPPNETLIB_CLIENT_LIBRARIES
34+
${CPPNETLIB_LIBRARIES}
35+
cppnetlib-http-client
36+
cppnetlib-http-client-connections )
37+
38+
set( CPPNETLIB_SERVER_LIBRARIES
39+
cppnetlib-http-server )
40+
endif()
41+
42+
2043
if (CPP-NETLIB_BUILD_TESTS)
2144
# These are the internal (simple) tests.
2245
set (MESSAGE_TESTS request_base_test request_test response_test
2346
response_incremental_parser_test)
2447
foreach ( test ${MESSAGE_TESTS} )
2548
add_executable(cpp-netlib-http-${test} ${test}.cpp)
26-
add_dependencies(cpp-netlib-http-${test}
27-
cppnetlib-message
28-
cppnetlib-message-wrappers
29-
cppnetlib-http-message
30-
cppnetlib-http-message-wrappers
31-
cppnetlib-uri
32-
cppnetlib-constants)
3349
target_link_libraries(cpp-netlib-http-${test}
3450
${Boost_LIBRARIES}
3551
${GTEST_BOTH_LIBRARIES}
3652
${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}
3753
${CMAKE_THREAD_LIBS_INIT}
38-
cppnetlib-message
39-
cppnetlib-message-wrappers
40-
cppnetlib-http-message
41-
cppnetlib-http-message-wrappers
42-
cppnetlib-uri
43-
cppnetlib-constants)
54+
${CPPNETLIB_LIBRARIES} )
4455
set_target_properties(cpp-netlib-http-${test}
4556
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
4657
add_test(cpp-netlib-http-${test}
@@ -54,16 +65,8 @@ if (CPP-NETLIB_BUILD_TESTS)
5465
${GTEST_BOTH_LIBRARIES}
5566
${ICU_LIBRARIES} ${ICU_I18N_LIBRARIES}
5667
${CMAKE_THREAD_LIBS_INIT}
57-
cppnetlib-constants
58-
cppnetlib-uri
59-
cppnetlib-message
60-
cppnetlib-message-wrappers
61-
cppnetlib-message-directives
6268
${CPP-NETLIB_LOGGING_LIB}
63-
cppnetlib-http-message
64-
cppnetlib-http-message-wrappers
65-
cppnetlib-http-client
66-
cppnetlib-http-client-connections)
69+
${CPPNETLIB_CLIENT_LIBRARIES} )
6770
if (OPENSSL_FOUND)
6871
target_link_libraries(cpp-netlib-http-client_test ${OPENSSL_LIBRARIES})
6972
endif()
@@ -77,9 +80,11 @@ if (CPP-NETLIB_BUILD_TESTS)
7780
server_default_connection_manager_test server_test)
7881
foreach (test ${SERVER_TESTS})
7982
add_executable(cpp-netlib-http-${test} ${test}.cpp)
80-
add_dependencies(cpp-netlib-http-${test} cppnetlib-http-server)
81-
target_link_libraries(cpp-netlib-http-${test} ${Boost_LIBRARIES}
82-
${GTEST_BOTH_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} cppnetlib-http-server)
83+
target_link_libraries(cpp-netlib-http-${test}
84+
${Boost_LIBRARIES}
85+
${GTEST_BOTH_LIBRARIES}
86+
${CMAKE_THREAD_LIBS_INIT}
87+
${CPPNETLIB_SERVER_LIBRARIES} )
8388
set_target_properties(cpp-netlib-http-${test} PROPERTIES
8489
RUNTIME_OUTPUT_DIRECTORY ${CPP-NETLIB_BINARY_DIR}/tests)
8590
add_test(cpp-netlib-http-${test}

logging/src/CMakeLists.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,15 @@
44
# http://www.boost.org/LICENSE_1_0.txt)
55

66
include_directories(${CPP-NETLIB_SOURCE_DIR}/logging/src ${CPP-NETLIB_SOURCE_DIR})
7-
set(CPP-NETLIB_LOGGING_SRCS logging.cpp)
7+
8+
set(CPP-NETLIB_LOGGING_SRCS
9+
logging.cpp)
10+
811
add_library(cppnetlib-logging ${CPP-NETLIB_LOGGING_SRCS})
9-
foreach (src_file ${CPP-NETLIB_LOGGING_SRCS})
10-
endforeach(src_file)
12+
13+
# prepend current directory to make paths absolute
14+
prependToElements( "${CMAKE_CURRENT_SOURCE_DIR}/"
15+
CPP-NETLIB_LOGGING_SRCS )
1116

1217
# propagate sources to parent directory for one-lib-build
1318
set(CPP-NETLIB_LOGGING_SRCS ${CPP-NETLIB_LOGGING_SRCS} PARENT_SCOPE)

0 commit comments

Comments
 (0)