diff --git a/.travis.yml b/.travis.yml index 55e9319f2..4b6736a00 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,26 +13,26 @@ install: - if [ "$CXX" = "clang++" ] && [ "$TRAVIS_OS_NAME" == "linux" ]; then export CXX="clang++-5.0" CC="clang-5.0"; fi # boost - wget https://dl.bintray.com/boostorg/release/1.66.0/source/boost_1_66_0.zip && unzip -q boost_1_66_0.zip && cd boost_1_66_0 && ./bootstrap.sh && ./b2 -j3 --prefix=${BASE}/usr --with-timer --with-chrono --with-test address-model=64 install > /dev/null && cd .. - - if [ "$TRAVIS_OS_NAME" == "linux" ]; then wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz && tar xf openssl-1.1.0h.tar.gz && cd openssl-1.1.0h && ./config --prefix=${BASE}/usr && make && make install > /dev/null && cd ..; fi - - if [ "$TRAVIS_OS_NAME" == "osx" ]; then wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz && tar xf openssl-1.1.0h.tar.gz && cd openssl-1.1.0h && ./Configure darwin64-x86_64-cc --prefix=${BASE}/usr && make && make install > /dev/null && cd ..; fi + - if [ "$TRAVIS_OS_NAME" == "linux" ]; then wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz && tar xf openssl-1.1.0h.tar.gz && cd openssl-1.1.0h && ./config --prefix=${BASE}/usr && make -j2 && make install > /dev/null && cd ..; fi + - if [ "$TRAVIS_OS_NAME" == "osx" ]; then wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz && tar xf openssl-1.1.0h.tar.gz && cd openssl-1.1.0h && ./Configure darwin64-x86_64-cc --prefix=${BASE}/usr && make -j2 && make install > /dev/null && cd ..; fi matrix: include: - os: osx compiler: clang - env: FLAGS="-DMQTT_NO_TLS=ON -DMQTT_USE_WS=ON" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" + env: FLAGS="-DMQTT_NO_TLS=ON -DMQTT_USE_WS=ON" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" MAKEFLAGS="-j2" - os: osx compiler: clang - env: FLAGS="-DMQTT_NO_TLS=ON -DMQTT_USE_WS=OFF" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" + env: FLAGS="-DMQTT_NO_TLS=ON -DMQTT_USE_WS=OFF" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" MAKEFLAGS="-j2" - os: osx compiler: clang - env: FLAGS="-DMQTT_NO_TLS=OFF -DMQTT_USE_WS=ON" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" + env: FLAGS="-DMQTT_NO_TLS=OFF -DMQTT_USE_WS=ON" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" MAKEFLAGS="-j2" - os: osx compiler: clang - env: FLAGS="-DMQTT_NO_TLS=OFF -DMQTT_USE_WS=OFF" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" + env: FLAGS="-DMQTT_NO_TLS=OFF -DMQTT_USE_WS=OFF" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" MAKEFLAGS="-j2" - os: linux compiler: clang - env: FLAGS="-DMQTT_NO_TLS=ON -DMQTT_USE_WS=ON" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" + env: FLAGS="-DMQTT_NO_TLS=ON -DMQTT_USE_WS=ON" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" MAKEFLAGS="-j2" addons: apt: sources: @@ -50,7 +50,7 @@ matrix: - os: linux sudo: required compiler: clang - env: FLAGS="-DMQTT_NO_TLS=OFF -DMQTT_USE_WS=ON" CFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers -fsanitize=address -fno-omit-frame-pointer" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-Wno-ignored-qualifiers -fsanitize=address" + env: FLAGS="-DMQTT_NO_TLS=OFF -DMQTT_USE_WS=ON" CFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers -fsanitize=address -fno-omit-frame-pointer" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers -fsanitize=address -fno-omit-frame-pointer" LDFLAGS="-Wno-ignored-qualifiers -fsanitize=address" MAKEFLAGS="-j2" addons: apt: sources: @@ -67,7 +67,7 @@ matrix: - libc6-dbg - os: linux compiler: gcc - env: FLAGS="-DMQTT_NO_TLS=ON -DMQTT_USE_WS=OFF" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" + env: FLAGS="-DMQTT_NO_TLS=ON -DMQTT_USE_WS=OFF" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" MAKEFLAGS="-j2" addons: apt: sources: @@ -81,7 +81,7 @@ matrix: - libc6-dbg - os: linux compiler: gcc - env: FLAGS="-DMQTT_NO_TLS=OFF -DMQTT_USE_WS=ON" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" + env: FLAGS="-DMQTT_NO_TLS=OFF -DMQTT_USE_WS=ON" CXXFLAGS="-Werror -g -Wall -Wextra -Wno-ignored-qualifiers" MAKEFLAGS="-j1" addons: apt: sources: @@ -95,4 +95,4 @@ matrix: - libc6-dbg script: - - mkdir build && cd build && cmake -DCMAKE_CXX_COMPILER="${CXX}" -DCMAKE_C_COMPILER="${CC}" -DCMAKE_LIBRARY_PATH="${BASE}/usr/lib" -DBOOST_ROOT="${BASE}/usr" -DOPENSSL_ROOT_DIR="${BASE}/usr" $FLAGS $CXXFLAGS $LDFLAGS .. && make VERBOSE=1 && ctest -VV + - mkdir build && cd build && cmake -DCMAKE_CXX_COMPILER="${CXX}" -DCMAKE_C_COMPILER="${CC}" -DCMAKE_LIBRARY_PATH="${BASE}/usr/lib" -DBOOST_ROOT="${BASE}/usr" -DOPENSSL_ROOT_DIR="${BASE}/usr" $FLAGS $CXXFLAGS $LDFLAGS .. && make $MAKEFLAGS VERBOSE=1 && ctest -VV diff --git a/include/mqtt/endpoint.hpp b/include/mqtt/endpoint.hpp index 2a999c548..60c89a9da 100644 --- a/include/mqtt/endpoint.hpp +++ b/include/mqtt/endpoint.hpp @@ -3839,12 +3839,25 @@ class endpoint : public std::enable_shared_from_this - void for_each_store(F&& f) { + void for_each_store(std::function const& f) { LockGuard lck (store_mtx_); auto& idx = store_.template get(); for (auto const & e : idx) { - f(e.ptr(), e.size()); + auto const& m = e.message(); + auto cb = continuous_buffer(m); + f(cb.data(), cb.size()); + } + } + + /** + * @brief Apply f to stored messages. + * @param f applying function. f should be void(message_variant const&) + */ + void for_each_store(std::function const& f) { + LockGuard lck (store_mtx_); + auto& idx = store_.template get(); + for (auto const & e : idx) { + f(e.message()); } }