Skip to content
Closed

Asio #582

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions BUILDING.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ But RPP is header-only library, so, without enabling any extra options is just c
- `RPP_BUILD_EXAMPLES` - (ON/OFF) build examples of usage of RPP (default OFF)
- `RPP_BUILD_SFML_CODE` - (ON/OFF) build RPP code related to SFML or not (default OFF) - requires SFML to be installed
- `RPP_BUILD_QT_CODE` - (ON/OFF) build RPPQT related code (examples/tests)(rppqt module doesn't requires this one) (default OFF) - requires QT5/6 to be installed
- `RPP_BUILD_ASIO_CODE` - (ON/OFF) build RPPASIO related code (examples/tests)(rppasio module doesn't requires this one) (default OFF) - requires asio to be installed

By default, it provides rpp and rppqt INTERFACE modules.

Expand Down
31 changes: 19 additions & 12 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,13 @@
"RPP_BUILD_QT_CODE" : "ON"
}
},
{
"name" : "build-asio",
"hidden": true,
"cacheVariables": {
"RPP_BUILD_ASIO_CODE" : "ON"
}
},
{
"name" : "use-conan",
"hidden": true,
Expand All @@ -160,7 +167,7 @@
},
{
"name": "ci-coverage-gcc",
"inherits": ["ci-build", "build-tests", "build-qt", "ci-unix", "ci-gcc"],
"inherits": ["ci-build", "build-tests", "build-qt", "build-asio", "ci-unix", "ci-gcc"],
"cacheVariables": {
"RPP_ENABLE_COVERAGE": "ON",
"CMAKE_CXX_FLAGS": "-O0 -g --coverage -fkeep-inline-functions -fkeep-static-functions -fprofile-arcs -ftest-coverage -fno-inline -fno-omit-frame-pointer -fno-optimize-sibling-calls",
Expand All @@ -171,7 +178,7 @@
},
{
"name": "ci-coverage-clang",
"inherits": ["ci-build", "build-tests", "build-qt", "ci-unix", "ci-clang"],
"inherits": ["ci-build", "build-tests", "build-qt", "build-asio", "ci-unix", "ci-clang"],
"cacheVariables": {
"RPP_ENABLE_COVERAGE": "ON",
"CMAKE_CXX_FLAGS": "-fprofile-instr-generate -fcoverage-mapping",
Expand All @@ -182,58 +189,58 @@
},
{
"name": "ci-sanitize-tsan",
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "ci-unix", "ci-clang"],
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "build-asio", "ci-unix", "ci-clang"],
"cacheVariables": {
"CMAKE_CXX_FLAGS": "-fsanitize=thread -g -O1"
}
},
{
"name": "ci-sanitize-asan",
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "ci-unix", "ci-clang"],
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "build-asio", "ci-unix", "ci-clang"],
"cacheVariables": {
"CMAKE_CXX_FLAGS": "-fsanitize=address -fno-optimize-sibling-calls -fsanitize-address-use-after-scope -fno-omit-frame-pointer -g -O1"
}
},
{
"name": "ci-sanitize-lsan",
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "ci-unix", "ci-clang"],
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "build-asio", "ci-unix", "ci-clang"],
"cacheVariables": {
"CMAKE_CXX_FLAGS": "-fsanitize=leak -fno-omit-frame-pointer -g -O1"
}
},
{
"name": "ci-sanitize-msan",
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "ci-unix", "ci-clang"],
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "build-asio", "ci-unix", "ci-clang"],
"cacheVariables": {
"CMAKE_CXX_FLAGS": "-fsanitize=memory -fno-optimize-sibling-calls -fsanitize-memory-track-origins=2 -fno-omit-frame-pointer -g -O2"
}
},
{
"name": "ci-sanitize-ubsan",
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "ci-unix", "ci-clang"],
"inherits": ["ci-build", "build-tests", "build-benchmarks", "build-qt", "build-asio", "ci-unix", "ci-clang"],
"cacheVariables": {
"CMAKE_CXX_FLAGS": "-fsanitize=undefined"
}
},
{
"name": "ci-macos-tests",
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-sfml", "ci-unix"]
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-asio", "build-sfml", "ci-unix"]
},
{
"name": "ci-ubuntu-clang-tests",
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-sfml", "ci-unix", "ci-clang", "cppcheck", "clang-tidy"]
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-asio", "build-sfml", "ci-unix", "ci-clang", "cppcheck", "clang-tidy"]
},
{
"name": "ci-ubuntu-gcc-tests",
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-sfml", "ci-unix", "ci-gcc", "cppcheck", "clang-tidy"]
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-asio", "build-sfml", "ci-unix", "ci-gcc", "cppcheck", "clang-tidy"]
},
{
"name": "ci-windows-tests",
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-sfml", "ci-win64"]
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-asio", "build-sfml", "ci-win64"]
},
{
"name": "ci-ubuntu-clang-tests-no-checks",
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-sfml", "ci-unix", "ci-clang" ]
"inherits": ["ci-build", "build-tests", "build-examples", "build-qt", "build-asio", "build-sfml", "ci-unix", "ci-clang" ]
},


Expand Down
5 changes: 5 additions & 0 deletions cmake/dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,8 @@ endif()
if (RPP_BUILD_BENCHMARKS)
rpp_fetch_library(nanobench https://github.com/martinus/nanobench.git master)
endif()

# ==================== ASIO =====================
if (RPP_BUILD_ASIO_CODE)
find_package(asio REQUIRED)
endif()
6 changes: 6 additions & 0 deletions cmake/install-rules.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,12 @@ install(
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/rppqt"
)

install(
TARGETS rppasio
EXPORT RPPTargets
INCLUDES DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/rppasio"
)

write_basic_package_version_file(
"${package}ConfigVersion.cmake"
COMPATIBILITY SameMajorVersion
Expand Down
4 changes: 4 additions & 0 deletions cmake/variables.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ endfunction()
# ------------ Options to tweak ---------------------
option(RPP_BUILD_SFML_CODE "Enable SFML support in examples/code." OFF)
option(RPP_BUILD_QT_CODE "Enable QT support in examples/code." OFF)
option(RPP_BUILD_ASIO_CODE "Enable ASIO support in examples/code." OFF)

if (RPP_DEVELOPER_MODE)
option(RPP_BUILD_TESTS "Build unit tests tree." OFF)
Expand All @@ -100,6 +101,9 @@ if (RPP_DEVELOPER_MODE)
if (RPP_BUILD_BENCHMARKS)
set(CONAN_ARGS "${CONAN_ARGS};-o rpp/*:with_benchmarks=True")
endif()
if (RPP_BUILD_ASIO_CODE)
set(CONAN_ARGS "${CONAN_ARGS};-o rpp/*:with_asio=True")
endif()
endif()

if(RPP_ENABLE_COVERAGE)
Expand Down
9 changes: 7 additions & 2 deletions conanfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,16 @@ class RppConan(ConanFile):
"with_sfml" : [False, True],
"with_tests" : [False, True],
"with_cmake" : [False, True],
"with_benchmarks" : [False, True]
"with_benchmarks" : [False, True],
"with_asio" : [False, True]
}
default_options = {
"with_grpc" : False,
"with_sfml" : False,
"with_tests": False,
"with_cmake": False,
"with_benchmarks" : False
"with_benchmarks" : False,
"with_asio" : False
}

def requirements(self):
Expand All @@ -32,6 +34,9 @@ def requirements(self):
if self.options.with_sfml:
self.requires("sfml/2.6.1", options={"audio": False})

if self.options.with_asio:
self.requires("asio/1.30.2")

# if self.options.with_grpc:
# self.requires("grpc/1.54.3", transitive_libs=True, transitive_headers=True)
# self.requires("protobuf/3.21.12")
Expand Down
1 change: 1 addition & 0 deletions src/extensions/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
add_subdirectory(rppqt)
add_subdirectory(rppasio)
11 changes: 11 additions & 0 deletions src/extensions/rppasio/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# ReactivePlusPlus library
#
# Copyright Aleksey Loginov 2022 - present.
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# https://www.boost.org/LICENSE_1_0.txt)
#
# Project home: https://github.com/victimsnino/ReactivePlusPlus
#

rpp_add_library(rppasio)
23 changes: 23 additions & 0 deletions src/extensions/rppasio/rppasio/fwd.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// ReactivePlusPlus library
//
// Copyright Aleksey Loginov 2022 - present.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
//
// Project home: https://github.com/victimsnino/ReactivePlusPlus
//

#pragma once

/**
* @defgroup rppasio RPPASIO
* @brief RppAsio is extension of RPP which enables support of boost-asio library.
*/


/**
* @defgroup asio_schedulers Schedulers
* @ingroup rppasio
*/
#include <rppasio/schedulers/fwd.hpp>
14 changes: 14 additions & 0 deletions src/extensions/rppasio/rppasio/rppasio.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// ReactivePlusPlus library
//
// Copyright Aleksey Loginov 2022 - present.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// https://www.boost.org/LICENSE_1_0.txt)
//
// Project home: https://github.com/victimsnino/ReactivePlusPlus
//

#pragma once

#include <rppasio/fwd.hpp>
#include <rppasio/schedulers.hpp>
Empty file.
Empty file.
Empty file.
6 changes: 2 additions & 4 deletions src/extensions/rppqt/rppqt/fwd.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,7 @@
#include <rppqt/sources/fwd.hpp>

/**
* @defgroup schedulers Schedulers
* @brief Scheduler is the way to introduce multi-threading in your application via RPP
* @see https://reactivex.io/documentation/scheduler.html
* @ingroup rpp
* @defgroup qt_schedulers Schedulers
* @ingroup rppqt
*/
#include <rppqt/schedulers/fwd.hpp>