@@ -78,6 +78,7 @@ find_package(ApMon MODULE)
7878find_package (CURL MODULE)
7979find_package (RdKafka CONFIG)
8080find_package (InfoLogger CONFIG)
81+ find_package (Protobuf CONFIG)
8182
8283####################################
8384# Set OUTPUT vars
@@ -183,6 +184,10 @@ if (APPLE)
183184 message (STATUS "Detected macOS: Process monitor disabled" )
184185endif ()
185186
187+ if (Protobuf_FOUND AND RdKafka_FOUND)
188+ message (STATUS "Compiling Kafka consumer with protobuf deserializer" )
189+ endif ()
190+
186191# Handle custom compile definitions
187192target_compile_definitions (Monitoring
188193 PRIVATE
@@ -234,6 +239,37 @@ set_target_properties(8-DbFiller PROPERTIES OUTPUT_NAME "o2-monitoring-dbfiller"
234239if (RdKafka_FOUND)
235240 set_target_properties (11-KafkaToWebsocket PROPERTIES OUTPUT_NAME "o2-monitoring-kafka-to-grafana" )
236241endif ()
242+ ####################################
243+ # Kafka protobuf deserializer
244+ ####################################
245+ if (RdKafka_FOUND AND Protobuf_FOUND)
246+ set (PROTO_FILE ${CMAKE_CURRENT_SOURCE_DIR} /proto/envs.proto)
247+ get_filename_component (PROTO_OUTPUT_NAME ${PROTO_FILE} NAME_WE )
248+ get_filename_component (PROTO_FILE_PREFIX ${PROTO_FILE} PATH )
249+ set (PROTO_CPP_OUTPUT ${CMAKE_CURRENT_BINARY_DIR} /${PROTO_OUTPUT_NAME} .pb.cc)
250+
251+ add_custom_command (
252+ OUTPUT "${PROTO_CPP_OUTPUT} "
253+ COMMAND protobuf::protoc
254+ ARGS --proto_path ${PROTO_FILE_PREFIX} --cpp_out ${CMAKE_CURRENT_SOURCE_DIR} /build ${PROTO_FILE}
255+ DEPENDS ${PROTO_FILE}
256+ COMMENT "Running protoc on ${PROTO_FILE} "
257+ VERBATIM )
258+
259+ add_executable (12-KafkvaToInfluxDb
260+ examples/12-KafkaToInfluxDb.cxx
261+ ${PROTO_CPP_OUTPUT} )
262+
263+ target_include_directories (12-KafkvaToInfluxDb
264+ PRIVATE
265+ ${CMAKE_CURRENT_BINARY_DIR} )
266+
267+ target_link_libraries (12-KafkvaToInfluxDb
268+ PRIVATE
269+ Monitoring
270+ Boost::program_options
271+ protobuf::libprotobuf)
272+ endif ()
237273
238274####################################
239275# Tests
0 commit comments