Skip to content

Commit 543b4d7

Browse files
authored
Merge pull request #3 from cpp-redis/appkins/streams
Appkins/streams
2 parents bec42d9 + e66feb3 commit 543b4d7

38 files changed

+3111
-2252
lines changed

CMakeLists.txt

Lines changed: 92 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -44,33 +44,33 @@ project(${PROJECT} CXX)
4444
###
4545
# compilation options
4646
###
47-
if(WIN32)
48-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /O2 /bigobj")
47+
if (WIN32)
48+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W3 /O2 /bigobj")
4949

50-
# was causing conflics with gtest build
51-
string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
50+
# was causing conflics with gtest build
51+
string(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG})
5252

53-
if("${MSVC_RUNTIME_LIBRARY_CONFIG}" STREQUAL "")
54-
set(MSVC_RUNTIME_LIBRARY_CONFIG "/MT")
55-
endif()
53+
if ("${MSVC_RUNTIME_LIBRARY_CONFIG}" STREQUAL "")
54+
set(MSVC_RUNTIME_LIBRARY_CONFIG "/MT")
55+
endif ()
5656

57-
foreach(flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE)
58-
if("${MSVC_RUNTIME_LIBRARY_CONFIG}" STREQUAL "/MT")
59-
string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
60-
elseif("${MSVC_RUNTIME_LIBRARY_CONFIG}" STREQUAL "/MD")
61-
string(REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}")
62-
else()
63-
string(REPLACE "/MD" "${MSVC_RUNTIME_LIBRARY_CONFIG}" ${flag_var} "${${flag_var}}")
64-
string(REPLACE "/MT" "${MSVC_RUNTIME_LIBRARY_CONFIG}" ${flag_var} "${${flag_var}}")
65-
endif()
66-
endforeach()
57+
foreach (flag_var CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE)
58+
if ("${MSVC_RUNTIME_LIBRARY_CONFIG}" STREQUAL "/MT")
59+
string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
60+
elseif ("${MSVC_RUNTIME_LIBRARY_CONFIG}" STREQUAL "/MD")
61+
string(REPLACE "/MT" "/MD" ${flag_var} "${${flag_var}}")
62+
else ()
63+
string(REPLACE "/MD" "${MSVC_RUNTIME_LIBRARY_CONFIG}" ${flag_var} "${${flag_var}}")
64+
string(REPLACE "/MT" "${MSVC_RUNTIME_LIBRARY_CONFIG}" ${flag_var} "${${flag_var}}")
65+
endif ()
66+
endforeach ()
6767

68-
add_definitions(-D_UNICODE)
69-
add_definitions(-DUNICODE)
70-
add_definitions(-DWIN32_LEAN_AND_MEAN)
71-
else()
72-
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -W -Wall -Wextra -O3")
73-
endif(WIN32)
68+
add_definitions(-D_UNICODE)
69+
add_definitions(-DUNICODE)
70+
add_definitions(-DWIN32_LEAN_AND_MEAN)
71+
else ()
72+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -W -Wall -Wextra -O3")
73+
endif (WIN32)
7474

7575

7676
###
@@ -81,9 +81,9 @@ find_library(TACOPIE_LIBRARY tacopie)
8181
set(CPP_REDIS_INCLUDES ${PROJECT_SOURCE_DIR}/includes)
8282
set(DEPS_INCLUDES ${PROJECT_SOURCE_DIR}/deps/include)
8383

84-
if(NOT USE_CUSTOM_TCP_CLIENT)
85-
set(DEPS_INCLUDES ${DEPS_INCLUDES} ${TACOPIE_INCLUDE_DIR})
86-
endif()
84+
if (NOT USE_CUSTOM_TCP_CLIENT)
85+
set(DEPS_INCLUDES ${DEPS_INCLUDES} ${TACOPIE_INCLUDE_DIR})
86+
endif ()
8787

8888
set(DEPS_LIBRARIES ${PROJECT_SOURCE_DIR}/deps/lib)
8989

@@ -98,31 +98,31 @@ include_directories(${CPP_REDIS_INCLUDES} ${DEPS_INCLUDES})
9898
# sources
9999
###
100100
set(SRC_DIRS "sources"
101-
"sources/builders"
102-
"sources/core"
103-
"sources/misc"
104-
"sources/network"
105-
"includes/cpp_redis"
106-
"includes/cpp_redis/builders"
107-
"includes/cpp_redis/core"
108-
"includes/cpp_redis/misc"
109-
"includes/cpp_redis/network")
110-
111-
foreach(dir ${SRC_DIRS})
112-
# get directory sources and headers
113-
file(GLOB s_${dir} "${dir}/*.cpp")
114-
file(GLOB h_${dir} "${dir}/*.hpp")
115-
file(GLOB i_${dir} "${dir}/*.ipp")
116-
117-
# set sources
118-
set(SOURCES ${SOURCES} ${s_${dir}} ${h_${dir}} ${i_${dir}})
119-
endforeach()
101+
"sources/builders"
102+
"sources/core"
103+
"sources/misc"
104+
"sources/network"
105+
"includes/cpp_redis"
106+
"includes/cpp_redis/builders"
107+
"includes/cpp_redis/core"
108+
"includes/cpp_redis/misc"
109+
"includes/cpp_redis/network")
110+
111+
foreach (dir ${SRC_DIRS})
112+
# get directory sources and headers
113+
file(GLOB s_${dir} "${dir}/*.cpp")
114+
file(GLOB h_${dir} "${dir}/*.hpp")
115+
file(GLOB i_${dir} "${dir}/*.ipp")
116+
117+
# set sources
118+
set(SOURCES ${SOURCES} ${s_${dir}} ${h_${dir}} ${i_${dir}})
119+
endforeach ()
120120
# filter tcp_client if no tacopie
121-
if(USE_CUSTOM_TCP_CLIENT)
122-
file(GLOB tacopie_cpp "sources/network/tcp_client.cpp")
123-
file(GLOB tacopie_h "includes/cpp_redis/network/tcp_client.hpp")
124-
list(REMOVE_ITEM SOURCES ${tacopie_cpp} ${tacopie_h})
125-
endif(USE_CUSTOM_TCP_CLIENT)
121+
if (USE_CUSTOM_TCP_CLIENT)
122+
file(GLOB tacopie_cpp "sources/network/tcp_client.cpp")
123+
file(GLOB tacopie_h "includes/cpp_redis/network/tcp_client.hpp")
124+
list(REMOVE_ITEM SOURCES ${tacopie_cpp} ${tacopie_h})
125+
endif (USE_CUSTOM_TCP_CLIENT)
126126

127127

128128
###
@@ -144,39 +144,39 @@ configure_file("cpp_redis.pc.in" "${CMAKE_PKGCONFIG_OUTPUT_DIRECTORY}/cpp_redis.
144144
add_library(${PROJECT} ${SOURCES})
145145
set_property(TARGET ${PROJECT} PROPERTY POSITION_INDEPENDENT_CODE ON)
146146

147-
if(WIN32)
148-
set_target_properties(${PROJECT}
149-
PROPERTIES COMPILE_PDB_NAME ${PROJECT}
150-
COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
151-
endif(WIN32)
147+
if (WIN32)
148+
set_target_properties(${PROJECT}
149+
PROPERTIES COMPILE_PDB_NAME ${PROJECT}
150+
COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
151+
endif (WIN32)
152152

153-
if(WIN32)
154-
target_link_libraries(${PROJECT} ws2_32)
155-
else()
156-
target_link_libraries(${PROJECT} pthread)
157-
endif(WIN32)
153+
if (WIN32)
154+
target_link_libraries(${PROJECT} ws2_32)
155+
else ()
156+
target_link_libraries(${PROJECT} pthread)
157+
endif (WIN32)
158158

159-
if(TACOPIE_LIBRARY)
160-
target_link_libraries(${PROJECT} ${TACOPIE_LIBRARY})
161-
else()
162-
target_link_libraries(${PROJECT} tacopie)
163-
endif(TACOPIE_LIBRARY)
159+
if (TACOPIE_LIBRARY)
160+
target_link_libraries(${PROJECT} ${TACOPIE_LIBRARY})
161+
else ()
162+
target_link_libraries(${PROJECT} tacopie)
163+
endif (TACOPIE_LIBRARY)
164164

165165

166166
# __CPP_REDIS_READ_SIZE
167-
if(READ_SIZE)
168-
set_property(TARGET ${PROJECT} APPEND_STRING PROPERTY COMPILE_DEFINITIONS " __CPP_REDIS_READ_SIZE=${READ_SIZE}")
169-
endif(READ_SIZE)
167+
if (READ_SIZE)
168+
set_property(TARGET ${PROJECT} APPEND_STRING PROPERTY COMPILE_DEFINITIONS " __CPP_REDIS_READ_SIZE=${READ_SIZE}")
169+
endif (READ_SIZE)
170170

171171
# __CPP_REDIS_LOGGING_ENABLED
172-
if(LOGGING_ENABLED)
173-
set_property(TARGET ${PROJECT} APPEND_STRING PROPERTY COMPILE_DEFINITIONS " __CPP_REDIS_LOGGING_ENABLED=${LOGGING_ENABLED}")
174-
endif(LOGGING_ENABLED)
172+
if (LOGGING_ENABLED)
173+
set_property(TARGET ${PROJECT} APPEND_STRING PROPERTY COMPILE_DEFINITIONS " __CPP_REDIS_LOGGING_ENABLED=${LOGGING_ENABLED}")
174+
endif (LOGGING_ENABLED)
175175

176176
# __CPP_REDIS_USE_CUSTOM_TCP_CLIENT
177-
if(USE_CUSTOM_TCP_CLIENT)
178-
set_property(TARGET ${PROJECT} APPEND_STRING PROPERTY COMPILE_DEFINITIONS " __CPP_REDIS_USE_CUSTOM_TCP_CLIENT=${USE_CUSTOM_TCP_CLIENT}")
179-
endif(USE_CUSTOM_TCP_CLIENT)
177+
if (USE_CUSTOM_TCP_CLIENT)
178+
set_property(TARGET ${PROJECT} APPEND_STRING PROPERTY COMPILE_DEFINITIONS " __CPP_REDIS_USE_CUSTOM_TCP_CLIENT=${USE_CUSTOM_TCP_CLIENT}")
179+
endif (USE_CUSTOM_TCP_CLIENT)
180180

181181

182182
###
@@ -194,30 +194,30 @@ install(DIRECTORY ${CPP_REDIS_INCLUDES}/ DESTINATION include USE_SOURCE_PERMISSI
194194
###
195195
# examples
196196
###
197-
if(BUILD_EXAMPLES)
198-
add_subdirectory(examples)
199-
# Reset variable to false to ensure tacopie does no build examples
200-
set(BUILD_EXAMPLES false)
201-
endif(BUILD_EXAMPLES)
197+
if (BUILD_EXAMPLES)
198+
add_subdirectory(examples)
199+
# Reset variable to false to ensure tacopie does no build examples
200+
set(BUILD_EXAMPLES false)
201+
endif (BUILD_EXAMPLES)
202202

203203
###
204204
# tests
205205
###
206-
if(BUILD_TESTS)
207-
enable_testing()
208-
add_subdirectory(tests)
209-
ExternalProject_Add("googletest"
210-
GIT_REPOSITORY "https://github.com/google/googletest.git"
211-
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/deps")
212-
# Reset variable to false to ensure tacopie does no build tests
213-
set(BUILD_TESTS false)
214-
endif(BUILD_TESTS)
206+
if (BUILD_TESTS)
207+
enable_testing()
208+
add_subdirectory(tests)
209+
ExternalProject_Add("googletest"
210+
GIT_REPOSITORY "https://github.com/google/googletest.git"
211+
CMAKE_ARGS "-DCMAKE_INSTALL_PREFIX=${PROJECT_SOURCE_DIR}/deps")
212+
# Reset variable to false to ensure tacopie does no build tests
213+
set(BUILD_TESTS false)
214+
endif (BUILD_TESTS)
215215

216216

217217
###
218218
# tacopie
219219
###
220-
if(NOT TACOPIE_LIBRARY AND NOT USE_CUSTOM_TCP_CLIENT)
221-
set(SOURCES) # reset the SOURCES var so that the tacopie project won't include the cpp_redis sources too
222-
add_subdirectory(tacopie)
223-
endif(NOT TACOPIE_LIBRARY AND NOT USE_CUSTOM_TCP_CLIENT)
220+
if (NOT TACOPIE_LIBRARY AND NOT USE_CUSTOM_TCP_CLIENT)
221+
set(SOURCES) # reset the SOURCES var so that the tacopie project won't include the cpp_redis sources too
222+
add_subdirectory(tacopie)
223+
endif (NOT TACOPIE_LIBRARY AND NOT USE_CUSTOM_TCP_CLIENT)

examples/CMakeLists.txt

Lines changed: 26 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -39,50 +39,29 @@ include_directories(${CPP_REDIS_INCLUDES})
3939
###
4040
link_directories(${DEPS_LIBRARIES})
4141

42-
43-
###
44-
# executable
45-
###
46-
add_executable(cpp_redis_client cpp_redis_client.cpp)
47-
target_link_libraries(cpp_redis_client cpp_redis)
48-
49-
add_executable(cpp_redis_consumer cpp_redis_consumer.cpp)
50-
target_link_libraries(cpp_redis_consumer cpp_redis)
51-
52-
add_executable(cpp_redis_future_client cpp_redis_future_client.cpp)
53-
target_link_libraries(cpp_redis_future_client cpp_redis)
54-
55-
add_executable(cpp_redis_subscriber cpp_redis_subscriber.cpp)
56-
target_link_libraries(cpp_redis_subscriber cpp_redis)
57-
58-
add_executable(cpp_redis_logger cpp_redis_logger.cpp)
59-
target_link_libraries(cpp_redis_logger cpp_redis)
60-
61-
add_executable(cpp_redis_kill cpp_redis_kill.cpp)
62-
target_link_libraries(cpp_redis_kill cpp_redis)
63-
64-
add_executable(cpp_redis_streams_client cpp_redis_streams_client.cpp)
65-
target_link_libraries(cpp_redis_streams_client cpp_redis)
66-
67-
add_executable(cpp_redis_high_availability_client cpp_redis_high_availability_client.cpp)
68-
target_link_libraries(cpp_redis_high_availability_client cpp_redis)
69-
70-
71-
###
72-
# link libs
73-
###
74-
if(WIN32)
75-
target_link_libraries(cpp_redis_client ws2_32)
76-
target_link_libraries(cpp_redis_future_client ws2_32)
77-
target_link_libraries(cpp_redis_subscriber ws2_32)
78-
target_link_libraries(cpp_redis_logger ws2_32)
79-
target_link_libraries(cpp_redis_kill ws2_32)
80-
target_link_libraries(cpp_redis_high_availability_client ws2_32)
81-
else()
82-
target_link_libraries(cpp_redis_client pthread)
83-
target_link_libraries(cpp_redis_future_client pthread)
84-
target_link_libraries(cpp_redis_subscriber pthread)
85-
target_link_libraries(cpp_redis_logger pthread)
86-
target_link_libraries(cpp_redis_kill pthread)
87-
target_link_libraries(cpp_redis_high_availability_client pthread)
88-
endif(WIN32)
42+
set(EXAMPLES cpp_redis_client
43+
cpp_redis_consumer
44+
cpp_redis_future_client
45+
cpp_redis_subscriber
46+
cpp_redis_logger
47+
cpp_redis_kill
48+
cpp_redis_streams_client
49+
cpp_redis_high_availability_client
50+
)
51+
52+
foreach(EXAMPLE IN ITEMS ${EXAMPLES})
53+
###
54+
# executable
55+
###
56+
add_executable(${EXAMPLE} ${EXAMPLE}.cpp)
57+
target_link_libraries(${EXAMPLE} cpp_redis)
58+
59+
###
60+
# link libs
61+
###
62+
if(WIN32)
63+
target_link_libraries(${EXAMPLE} ws2_32)
64+
else()
65+
target_link_libraries(${EXAMPLE} pthread)
66+
endif(WIN32)
67+
endforeach(EXAMPLE)

examples/cpp_redis_client.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ main(void) {
5454
}
5555
});
5656

57-
auto replcmd = [](cpp_redis::reply &reply) {
57+
auto replcmd = [](const cpp_redis::reply &reply) {
5858
std::cout << "set hello 42: " << reply << std::endl;
5959
// if (reply.is_string())
6060
// do_something_with_string(reply.as_string())

examples/cpp_redis_consumer.cpp

Lines changed: 32 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ sigint_handler(int) {
3939
}
4040

4141
int
42-
main(void) {
42+
main() {
4343
#ifdef _WIN32
4444
//! Windows netword DLL init
4545
WORD version = MAKEWORD(2, 2);
@@ -53,7 +53,8 @@ main(void) {
5353

5454
//! Enable logging
5555

56-
const std::string group_name = "groupone";
56+
//const std::string group_name = "groupone";
57+
const std::vector<std::string> group_names = {"groupone"}; //, "grouptwo"};
5758
const std::string session_name = "sessone";
5859
const std::string consumer_name = "ABCD";
5960

@@ -68,11 +69,36 @@ main(void) {
6869
}
6970
});
7071

71-
sub.subscribe(group_name, [](const cpp_redis::message_type msg){
72-
std::cout << "Id in the cb: " << msg.get_id() << std::endl;
72+
sub.auth("{redis_key}");
73+
74+
for (auto &group : group_names) {
75+
76+
sub.subscribe(group,
77+
[group](const cpp_redis::message_type msg) {
78+
cpp_redis::consumer_response_t res;
79+
// Callback will run for each message obtained from the queue
80+
std::cout << "Group: " << group << std::endl;
81+
std::cout << "Id in the cb: " << msg.get_id() << std::endl;
82+
res.insert({"Id", msg.get_id()});
83+
return res;
84+
},
85+
[group](int ack_status) {
86+
// Callback will run upon return of xack
87+
std::cout << "Group: " << group << std::endl;
88+
std::cout << "Ack status: " << ack_status << std::endl;
89+
});
90+
}
7391

74-
return msg;
75-
});
92+
/*sub.subscribe(group_name,
93+
[](const cpp_redis::message_type msg) {
94+
// Callback will run for each message obtained from the queue
95+
std::cout << "Id in the cb: " << msg.get_id() << std::endl;
96+
return msg;
97+
},
98+
[](int ack_status) {
99+
// Callback will run upon return of xack
100+
std::cout << "Ack status: " << ack_status << std::endl;
101+
});*/
76102

77103
sub.commit();
78104

examples/cpp_redis_streams_client.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
#endif /* _WIN32 */
2828

2929
int
30-
main(void) {
30+
main() {
3131
#ifdef _WIN32
3232
//! Windows netword DLL init
3333
WORD version = MAKEWORD(2, 2);

0 commit comments

Comments
 (0)