From 5e10a31e9f17b2730961c0aea299c2a5c496c245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Thu, 28 Nov 2024 12:21:30 +0100 Subject: [PATCH 1/7] fixing an issue discovered by clang-19 --- CMakeLists.txt | 2 +- examples/demo_algorithm.hpp | 9 +++------ examples/empty.cpp | 35 +++++++++++++++++++++++++++++++++- src/beman/net29/CMakeLists.txt | 2 +- 4 files changed, 39 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7366bc6..8ff6d46 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ FetchContent_Declare( execution26 # for local development, use SOURCE_DIR /execution26 GIT_REPOSITORY https://github.com/bemanproject/execution26 - GIT_TAG 81c58fe + GIT_TAG 8420165 ) FetchContent_MakeAvailable(execution26) diff --git a/examples/demo_algorithm.hpp b/examples/demo_algorithm.hpp index b698970..43625a7 100644 --- a/examples/demo_algorithm.hpp +++ b/examples/demo_algorithm.hpp @@ -16,7 +16,7 @@ # include #endif -#include //-dk:TODO remove +#include // ---------------------------------------------------------------------------- @@ -88,11 +88,6 @@ namespace demo::detail { using type = ex::detail::type_list; }; - template - struct make_type_list> - { - using type = ex::detail::type_list; - }; template using make_type_list_t = typename make_type_list::type; } @@ -448,4 +443,6 @@ inline auto demo::when_any_t::operator()(Sender&&...sender) const // ---------------------------------------------------------------------------- +#include + #endif diff --git a/examples/empty.cpp b/examples/empty.cpp index 9489180..52bd3e9 100644 --- a/examples/empty.cpp +++ b/examples/empty.cpp @@ -26,7 +26,40 @@ std::unordered_map files{ {"/logo.png", "examples/data/logo.png"}, }; +struct sender { + using sender_concept = ex::sender_t; + using completion_signatures = + ex::completion_signatures; + + struct state { + using operation_state_concept = ex::operation_state_t; + void start() & noexcept {} + }; + + state connect(auto&&) { return {}; } +}; + +static_assert(ex::operation_state); +static_assert(ex::sender); +static_assert(ex::sender_in); + +struct receiver { + using receiver_concept = ex::receiver_t; + void set_value(auto&&...) && noexcept {} + void set_error(auto&&) && noexcept {} + void set_stopped() && noexcept {} +}; + +static_assert(ex::receiver); + auto main() -> int { - std::cout << "hello, world\n"; + auto s{demo::when_any(sender{})}; + using t = demo::detail::make_type_list>; + static_assert(std::same_as); + std::move(s).connect(receiver{}); + ex::connect(std::move(s), receiver{}); + static_assert(ex::sender); + static_assert(ex::sender_in); + ex::sync_wait(std::move(s)); } diff --git a/src/beman/net29/CMakeLists.txt b/src/beman/net29/CMakeLists.txt index 1efbcb0..68f04bb 100644 --- a/src/beman/net29/CMakeLists.txt +++ b/src/beman/net29/CMakeLists.txt @@ -56,7 +56,7 @@ install( FILE_SET ${TARGET_LIBRARY}_detail_headers ) target_include_directories(${TARGET_LIBRARY} PUBLIC $) -target_link_libraries(${TARGET_LIBRARY} PUBLIC beman::execution26) +target_link_libraries(${TARGET_LIBRARY} PUBLIC beman_execution26) install(EXPORT ${TARGETS_EXPORT_NAME}1 FILE ${TARGET_LIBRARY}-config.cmake From 12faf5bf5e7badfa6c261a5b0f3741ffc79182b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Thu, 28 Nov 2024 09:49:59 +0100 Subject: [PATCH 2/7] added code and data for the 2024-11-27 Milano presentation --- examples/CMakeLists.txt | 1 + examples/data/index-milano.html | 10 ++++ examples/data/itcpp.png | Bin 0 -> 17743 bytes examples/milano.cpp | 97 ++++++++++++++++++++++++++++++++ 4 files changed, 108 insertions(+) create mode 100644 examples/data/index-milano.html create mode 100644 examples/data/itcpp.png create mode 100644 examples/milano.cpp diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index cc0922e..851c290 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -10,6 +10,7 @@ set(EXAMPLES client task cppcon-2024 + milano ) foreach(EXAMPLE ${EXAMPLES}) diff --git a/examples/data/index-milano.html b/examples/data/index-milano.html new file mode 100644 index 0000000..aea54f3 --- /dev/null +++ b/examples/data/index-milano.html @@ -0,0 +1,10 @@ + + + Ciao Milano! + + + +

Ciao Milano!

+ + + diff --git a/examples/data/itcpp.png b/examples/data/itcpp.png new file mode 100644 index 0000000000000000000000000000000000000000..12c1056ae52f943e99972f0a03ff9127364a03fc GIT binary patch literal 17743 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 Uy-=f`odF0uUHx3vIVCg!0Dq8m!2kdN literal 0 HcmV?d00001 diff --git a/examples/milano.cpp b/examples/milano.cpp new file mode 100644 index 0000000..6800480 --- /dev/null +++ b/examples/milano.cpp @@ -0,0 +1,97 @@ +// examples/http-server.cpp -*-C++-*- +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#include +#include +#include "demo_algorithm.hpp" +#include "demo_error.hpp" +#include "demo_scope.hpp" +#include "demo_task.hpp" +#include +#include +#include +#include +#include +#include + +namespace ex = beman::execution26; +namespace net = beman::net29; +using namespace std::chrono_literals; + +// ---------------------------------------------------------------------------- + +std::unordered_map files{ + {"/", "examples/data/index-milano.html"}, + {"/favicon.ico", "examples/data/favicon.ico"}, + {"/logo.png", "examples/data/logo.png"}, + {"/itcpp.png", "examples/data/itcpp.png"}, +}; + +auto timeout(auto scheduler, auto dur, ex::sender auto sender) { + return demo::when_any( + net::resume_after(scheduler, dur) + | demo::into_error([]{ return std::error_code(); }), + std::move(sender) + ); +} + +using on_exit = std::unique_ptr; +demo::task<> run_client(auto client, auto s) { + on_exit exit("client exiting"); + char buffer[8194]; + std::ostringstream out; + try { + while (true) { + auto n = co_await timeout(s, 1s, net::async_receive(client, net::buffer(buffer))); + if (n == 0u) + co_return; + // std::cout << "received=" << std::string_view(buffer, n) << "\n"; + std::istringstream in(std::string(buffer, n)); + std::string method, url, version; + if (!(in >> method >> url >> version)) + co_return; + auto it = files.find(url); + std::cout << "url=" << url << " found=" << (it == files.end()? "no": "yes") << "\n"; + std::string content; + if (it != files.end()) { + std::ifstream fin(it->second); + out.str({}); + out << fin.rdbuf(); + content = out.str(); + } + out.str(std::string()); + out << "HTTP/1.1 200 found\r\n" + << "Content-Length: " << content.size() << "\r\n" + << "\r\n" + << content; + + content = out.str(); + co_await net::async_send(client, net::buffer(content)); + //break; + } + } catch (std::exception const& ex) { + std::cout << "received timeout! ex=" << ex.what() << "\n"; + } catch (...) { + std::cout << "received timeout!\n"; + } +} + +auto main() -> int +{ + demo::scope scope; + net::io_context context; + + scope.spawn([](auto& context, auto& scope)->demo::task<> { + net::ip::tcp::endpoint ep(net::ip::address_v4::any(), 12345); + net::ip::tcp::acceptor acceptor(context, ep); + while (true) { + auto[client, address] = co_await net::async_accept(acceptor); + std::cout << "received a connection from " << address << "\n"; + scope.spawn(run_client(std::move(client), context.get_scheduler())); + } + }(context, scope)); + + context.run(); + + +} From d52c4d54ecf15624042cf081c90ee58ec6459e18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Thu, 28 Nov 2024 12:32:59 +0100 Subject: [PATCH 3/7] fix issues discovered by CI --- examples/demo_algorithm.hpp | 4 +++- examples/milano.cpp | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/demo_algorithm.hpp b/examples/demo_algorithm.hpp index 43625a7..dcc2f39 100644 --- a/examples/demo_algorithm.hpp +++ b/examples/demo_algorithm.hpp @@ -16,7 +16,9 @@ # include #endif -#include +#if 15 < __clang_major__ +# include +#endif // ---------------------------------------------------------------------------- diff --git a/examples/milano.cpp b/examples/milano.cpp index 6800480..358b15a 100644 --- a/examples/milano.cpp +++ b/examples/milano.cpp @@ -35,9 +35,9 @@ auto timeout(auto scheduler, auto dur, ex::sender auto sender) { ); } -using on_exit = std::unique_ptr; +using on_exit_msg = std::unique_ptr; demo::task<> run_client(auto client, auto s) { - on_exit exit("client exiting"); + on_exit_msg exit("client exiting"); char buffer[8194]; std::ostringstream out; try { From ac2aff6977c635f720a83550f6363908168a5d36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Thu, 28 Nov 2024 12:51:49 +0100 Subject: [PATCH 4/7] another attempt fixing CI reported errors --- examples/demo_algorithm.hpp | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/examples/demo_algorithm.hpp b/examples/demo_algorithm.hpp index dcc2f39..2ea1be5 100644 --- a/examples/demo_algorithm.hpp +++ b/examples/demo_algorithm.hpp @@ -4,6 +4,18 @@ #ifndef INCLUDED_EXAMPLES_DEMO_ALGORITHM #define INCLUDED_EXAMPLES_DEMO_ALGORITHM +#if defined(__GNUC__) +# pragma GCC diagnostic push +# pragma GCC diagnostic ignored "-Wmissing-braces" +# pragma GCC diagnostic ignored "-Wmissing-field-initializers" +#endif + +#if defined(__clang__) +# pragma clang diagnostic push +# pragma clang diagnostic ignored "-Wunknown-warning-option" +# pragma clang diagnostic ignored "-Wmissing-braces" +#endif + #include #include #include @@ -16,10 +28,6 @@ # include #endif -#if 15 < __clang_major__ -# include -#endif - // ---------------------------------------------------------------------------- namespace demo @@ -445,6 +453,4 @@ inline auto demo::when_any_t::operator()(Sender&&...sender) const // ---------------------------------------------------------------------------- -#include - #endif From 036a6fd389812c8b376840b68142a62908be6b15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Sat, 30 Nov 2024 15:15:32 +0000 Subject: [PATCH 5/7] restoring the "empty" example --- examples/empty.cpp | 35 +---------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/examples/empty.cpp b/examples/empty.cpp index 52bd3e9..9489180 100644 --- a/examples/empty.cpp +++ b/examples/empty.cpp @@ -26,40 +26,7 @@ std::unordered_map files{ {"/logo.png", "examples/data/logo.png"}, }; -struct sender { - using sender_concept = ex::sender_t; - using completion_signatures = - ex::completion_signatures; - - struct state { - using operation_state_concept = ex::operation_state_t; - void start() & noexcept {} - }; - - state connect(auto&&) { return {}; } -}; - -static_assert(ex::operation_state); -static_assert(ex::sender); -static_assert(ex::sender_in); - -struct receiver { - using receiver_concept = ex::receiver_t; - void set_value(auto&&...) && noexcept {} - void set_error(auto&&) && noexcept {} - void set_stopped() && noexcept {} -}; - -static_assert(ex::receiver); - auto main() -> int { - auto s{demo::when_any(sender{})}; - using t = demo::detail::make_type_list>; - static_assert(std::same_as); - std::move(s).connect(receiver{}); - ex::connect(std::move(s), receiver{}); - static_assert(ex::sender); - static_assert(ex::sender_in); - ex::sync_wait(std::move(s)); + std::cout << "hello, world\n"; } From a8c4e64489c53e68f37e26508e5a140f10eac930 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Sat, 30 Nov 2024 15:31:39 +0000 Subject: [PATCH 6/7] updated the execution26 reference version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8ff6d46..b503abb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,7 @@ FetchContent_Declare( execution26 # for local development, use SOURCE_DIR /execution26 GIT_REPOSITORY https://github.com/bemanproject/execution26 - GIT_TAG 8420165 + GIT_TAG c32b4fc ) FetchContent_MakeAvailable(execution26) From f90be71077b62b28d4d36ce376b9aed30deb8a6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dietmar=20K=C3=BChl?= Date: Sat, 30 Nov 2024 15:41:28 +0000 Subject: [PATCH 7/7] trying to avoid a CI problem for older clang --- examples/demo_algorithm.hpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/examples/demo_algorithm.hpp b/examples/demo_algorithm.hpp index 2ea1be5..12da3b5 100644 --- a/examples/demo_algorithm.hpp +++ b/examples/demo_algorithm.hpp @@ -98,6 +98,13 @@ namespace demo::detail { using type = ex::detail::type_list; }; +#if __clang_major__ < 16 + template + struct make_type_list> + { + using type = ex::detail::type_list; + }; +#endif template using make_type_list_t = typename make_type_list::type; }