diff options
| -rw-r--r-- | .vscode/settings.json | 5 | ||||
| -rw-r--r-- | CMakeLists.txt | 3 | ||||
| -rw-r--r-- | cmake/Modules/ConanDependencies.cmake | 1 | ||||
| -rw-r--r-- | conanfile.py | 8 | ||||
| -rw-r--r-- | src/commander.cpp | 4 | ||||
| -rw-r--r-- | src/commander.hpp | 11 | ||||
| -rw-r--r-- | src/control_connection.cpp | 8 | ||||
| -rw-r--r-- | src/control_connection.hpp | 11 | ||||
| -rw-r--r-- | src/control_interface.cpp | 21 | ||||
| -rw-r--r-- | src/control_interface.hpp | 17 | ||||
| -rw-r--r-- | src/wandac.cpp | 4 | ||||
| -rw-r--r-- | src/wandad.cpp | 6 |
12 files changed, 52 insertions, 47 deletions
diff --git a/.vscode/settings.json b/.vscode/settings.json index 4b30768..7395e06 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -59,6 +59,9 @@ "typeindex": "cpp", "typeinfo": "cpp", "__config": "cpp", - "__nullptr": "cpp" + "__nullptr": "cpp", + "hash_map": "cpp", + "strstream": "cpp", + "algorithm": "cpp" } }
\ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ed8098..a84f221 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,8 +40,7 @@ set(WANDA_CORE_HEADERS ) set(WANDA_CORE_LIBRARIES - "CONAN_PKG::boost_asio" - "CONAN_PKG::boost_program_options" + "CONAN_PKG::asio" "CONAN_PKG::spdlog" "SYSTEM::C++FS" "Threads::Threads" diff --git a/cmake/Modules/ConanDependencies.cmake b/cmake/Modules/ConanDependencies.cmake index ee7d921..7cdc67e 100644 --- a/cmake/Modules/ConanDependencies.cmake +++ b/cmake/Modules/ConanDependencies.cmake @@ -5,6 +5,7 @@ endif() include("${CMAKE_BINARY_DIR}/conan.cmake") +set(CONAN_SYSTEM_INCLUDES ON) conan_check(REQUIRED) conan_add_remote(NAME "bincrafters" URL "https://api.bintray.com/conan/bincrafters/public-conan") conan_cmake_run(CONANFILE "conanfile.py" BASIC_SETUP CMAKE_TARGETS BUILD "missing" OUTPUT_QUIET) diff --git a/conanfile.py b/conanfile.py index 630e481..5c6a159 100644 --- a/conanfile.py +++ b/conanfile.py @@ -23,11 +23,15 @@ class Wanda(ConanFile): "src/*", ) requires = ( - "boost_program_options/1.67.0@bincrafters/stable", + "asio/1.12.0@bincrafters/stable", "boost_iterator/1.67.0@bincrafters/stable", - "boost_asio/1.67.0@bincrafters/stable", + "clara/1.1.5@bincrafters/stable", "spdlog/1.2.1@bincrafters/stable", ) + default_options = { + "asio:standalone": True, + "spdlog:fmt_external": False, + } def build(self): cmake = CMake(self) diff --git a/src/commander.cpp b/src/commander.cpp index 5c15ef9..bf6d0d2 100644 --- a/src/commander.cpp +++ b/src/commander.cpp @@ -5,7 +5,7 @@ namespace wanda { -commander::commander(boost::asio::io_service &service, std::filesystem::path socket) +commander::commander(asio::io_service &service, std::filesystem::path socket) : m_service{service}, m_endpoint{socket.string()}, m_socket{service} @@ -30,7 +30,7 @@ void commander::start() }); } -void commander::on_error(wanda::control_connection::pointer connection, boost::system::error_code error) +void commander::on_error(control_connection::pointer connection, std::error_code error) { std::cerr << "[commander::on_error] error occured: " << error.message() << '\n'; } diff --git a/src/commander.hpp b/src/commander.hpp index b88cd7f..6337f08 100644 --- a/src/commander.hpp +++ b/src/commander.hpp @@ -4,8 +4,7 @@ #include "control_connection.hpp" #include "message.hpp" -#include <boost/asio.hpp> -#include <boost/system/error_code.hpp> +#include <asio.hpp> #include <filesystem> #include <string> @@ -15,15 +14,15 @@ namespace wanda struct commander : wanda::control_connection::listener { - commander(boost::asio::io_service &service, std::filesystem::path socket); + commander(asio::io_service &service, std::filesystem::path socket); void start(); - void on_error(wanda::control_connection::pointer connection, boost::system::error_code error) override; - void on_received(wanda::control_connection::pointer connection, message message) override; + void on_error(control_connection::pointer connection, std::error_code error) override; + void on_received(control_connection::pointer connection, message message) override; private: - boost::asio::io_service & m_service; + asio::io_service & m_service; wanda::control_connection::protocol::endpoint m_endpoint; wanda::control_connection::protocol::socket m_socket; wanda::control_connection::pointer m_connection; diff --git a/src/control_connection.cpp b/src/control_connection.cpp index b0d30d6..2ac302c 100644 --- a/src/control_connection.cpp +++ b/src/control_connection.cpp @@ -40,7 +40,7 @@ void control_connection::start() void control_connection::send(message message) { m_output << message << '\n'; - boost::asio::async_write(m_socket, m_out, boost::asio::transfer_exactly(message.size() + 1), [that = shared_from_this(), this](auto const &error, auto const length) { + asio::async_write(m_socket, m_out, asio::transfer_exactly(message.size() + 1), [that = shared_from_this(), this](auto const &error, auto const length) { if (error) { // TODO: Handle error @@ -54,7 +54,7 @@ void control_connection::send(message message) void control_connection::close() { - if (auto error = boost::system::error_code{}; m_socket.cancel(error)) + if (auto error = std::error_code{}; m_socket.cancel(error)) { for (auto &listener : m_listeners) { @@ -62,7 +62,7 @@ void control_connection::close() } } - if (auto error = boost::system::error_code{}; m_socket.close(error)) + if (auto error = std::error_code{}; m_socket.close(error)) { for (auto &listener : m_listeners) { @@ -89,7 +89,7 @@ control_connection::state control_connection::current_state() const void control_connection::perform_read() { - boost::asio::async_read_until(m_socket, m_in, '\n', [that = shared_from_this(), this](auto const &error, auto const length) { + asio::async_read_until(m_socket, m_in, '\n', [that = shared_from_this(), this](auto const &error, auto const length) { if (error) { for (auto &listener : m_listeners) diff --git a/src/control_connection.hpp b/src/control_connection.hpp index 24d3276..bd3db9d 100644 --- a/src/control_connection.hpp +++ b/src/control_connection.hpp @@ -4,27 +4,28 @@ #include "keyed.hpp" #include "message.hpp" -#include <boost/asio.hpp> +#include <asio.hpp> #include <istream> #include <memory> #include <ostream> #include <set> #include <string> +#include <system_error> namespace wanda { struct control_connection : keyed<control_connection>, std::enable_shared_from_this<control_connection> { - using protocol = boost::asio::local::stream_protocol; + using protocol = asio::local::stream_protocol; using pointer = std::shared_ptr<control_connection>; struct listener { virtual void on_close(pointer connection) {} virtual void on_received(pointer connection, message message) {} - virtual void on_error(pointer connection, boost::system::error_code) {} + virtual void on_error(pointer connection, std::error_code) {} }; enum struct state : std::underlying_type_t<std::byte> @@ -78,8 +79,8 @@ struct control_connection : keyed<control_connection>, std::enable_shared_from_t void perform_read(); protocol::socket m_socket; - boost::asio::streambuf m_in{}; - boost::asio::streambuf m_out{}; + asio::streambuf m_in{}; + asio::streambuf m_out{}; std::istream m_input{&m_in}; std::ostream m_output{&m_out}; std::set<listener *> m_listeners{}; diff --git a/src/control_interface.cpp b/src/control_interface.cpp index a3ecdb8..b8ca58e 100644 --- a/src/control_interface.cpp +++ b/src/control_interface.cpp @@ -1,7 +1,5 @@ #include "control_interface.hpp" -#include <boost/system/error_code.hpp> - #include <spdlog/fmt/ostr.h> #include <unistd.h> @@ -9,6 +7,7 @@ #include <algorithm> #include <iterator> #include <string> +#include <system_error> #include <utility> namespace wanda @@ -26,7 +25,7 @@ socket_deleter::~socket_deleter() // 'control_interface' implementation -control_interface::control_interface(control_interface::key key, boost::asio::io_service &service, control_interface::protocol::endpoint endpoint, std::shared_ptr<spdlog::logger> logger) +control_interface::control_interface(control_interface::key key, asio::io_service &service, control_interface::protocol::endpoint endpoint, std::shared_ptr<spdlog::logger> logger) : keyed{key}, m_service{service}, m_endpoint{std::move(endpoint)}, @@ -36,19 +35,19 @@ control_interface::control_interface(control_interface::key key, boost::asio::io { } -boost::system::error_code control_interface::start() +std::error_code control_interface::start() { - if (auto error = boost::system::error_code{}; m_acceptor.open(m_endpoint.protocol(), error)) + if (auto error = std::error_code{}; m_acceptor.open(m_endpoint.protocol(), error)) { return error; } - if (auto error = boost::system::error_code{}; m_acceptor.bind(m_endpoint, error)) + if (auto error = std::error_code{}; m_acceptor.bind(m_endpoint, error)) { return error; } - if (auto error = boost::system::error_code{}; m_acceptor.listen(128, error)) + if (auto error = std::error_code{}; m_acceptor.listen(128, error)) { return error; } @@ -59,21 +58,21 @@ boost::system::error_code control_interface::start() } } -boost::system::error_code control_interface::shutdown() +std::error_code control_interface::shutdown() { for (auto &connection : m_connections) { connection->close(); } - auto error = boost::system::error_code{}; + auto error = std::error_code{}; return m_acceptor.close(error); } void control_interface::perform_accept() { m_acceptor.async_accept(m_socket, [that = shared_from_this(), this](auto const &error) { - if (error && error != boost::asio::error::operation_aborted) + if (error && error != asio::error::operation_aborted) { m_logger->error("failed to accept connection because '{}'", error); } @@ -134,7 +133,7 @@ void control_interface::on_received(control_connection::pointer connection, mess } } -control_interface::pointer make_interface(boost::asio::io_service &service, std::filesystem::path file, std::shared_ptr<spdlog::logger> logger) +control_interface::pointer make_interface(asio::io_service &service, std::filesystem::path file, std::shared_ptr<spdlog::logger> logger) { if (std::filesystem::exists(file)) { diff --git a/src/control_interface.hpp b/src/control_interface.hpp index c11571a..35f7f4f 100644 --- a/src/control_interface.hpp +++ b/src/control_interface.hpp @@ -4,8 +4,7 @@ #include "control_connection.hpp" #include "keyed.hpp" -#include <boost/asio.hpp> -#include <boost/system/error_code.hpp> +#include <asio.hpp> #include <spdlog/spdlog.h> @@ -30,13 +29,13 @@ struct socket_deleter struct control_interface : control_connection::listener, keyed<control_interface>, std::enable_shared_from_this<control_interface> { - using protocol = boost::asio::local::stream_protocol; + using protocol = asio::local::stream_protocol; using pointer = std::shared_ptr<control_interface>; - control_interface(key, boost::asio::io_service &service, protocol::endpoint endpoint, std::shared_ptr<spdlog::logger> logger); + control_interface(key, asio::io_service &service, protocol::endpoint endpoint, std::shared_ptr<spdlog::logger> logger); - boost::system::error_code start(); - boost::system::error_code shutdown(); + std::error_code start(); + std::error_code shutdown(); void on_close(control_connection::pointer connection) override; void on_received(control_connection::pointer connection, message message) override; @@ -44,9 +43,9 @@ struct control_interface : control_connection::listener, keyed<control_interface private: void perform_accept(); - friend pointer make_interface(boost::asio::io_service &service, std::filesystem::path file, std::shared_ptr<spdlog::logger> logger); + friend pointer make_interface(asio::io_service &service, std::filesystem::path file, std::shared_ptr<spdlog::logger> logger); - boost::asio::io_service &m_service; + asio::io_service &m_service; protocol::endpoint m_endpoint; protocol::socket m_socket; protocol::acceptor m_acceptor; @@ -55,7 +54,7 @@ struct control_interface : control_connection::listener, keyed<control_interface std::shared_ptr<spdlog::logger> m_logger; }; -control_interface::pointer make_interface(boost::asio::io_service &service, std::filesystem::path file, std::shared_ptr<spdlog::logger> logger); +control_interface::pointer make_interface(asio::io_service &service, std::filesystem::path file, std::shared_ptr<spdlog::logger> logger); } // namespace wanda diff --git a/src/wandac.cpp b/src/wandac.cpp index 9835b38..6b218c4 100644 --- a/src/wandac.cpp +++ b/src/wandac.cpp @@ -2,7 +2,7 @@ #include "environment.hpp" #include "xdg.hpp" -#include <boost/asio.hpp> +#include <asio.hpp> #include <filesystem> #include <iostream> @@ -12,7 +12,7 @@ int main() { auto environment = wanda::environment{}; auto interface = wanda::xdg_path_for(wanda::xdg_directory::runtime_dir, environment) / ".wanda_interface"; - auto service = boost::asio::io_service{}; + auto service = asio::io_service{}; std::clog << "[wandac::main] Initializing commander for socket '" << interface.native() << "'\n"; auto commander = wanda::commander{service, interface}; diff --git a/src/wandad.cpp b/src/wandad.cpp index b7bc0fe..c0c2517 100644 --- a/src/wandad.cpp +++ b/src/wandad.cpp @@ -6,7 +6,7 @@ #include "wallpaper.hpp" #include "xdg.hpp" -#include <boost/asio.hpp> +#include <asio.hpp> #include <spdlog/spdlog.h> #include <spdlog/sinks/stdout_color_sinks.h> @@ -46,7 +46,7 @@ int main() auto wallpaper = wanda::random_pick(list); wanda::set_wallpaper(wallpaper); - auto service = boost::asio::io_service{}; + auto service = asio::io_service{}; auto socket_path = wanda::xdg_path_for(wanda::xdg_directory::runtime_dir, wanda::environment{}) / ".wanda_interface"; log->info("starting control interface on '{}'", socket_path.native()); @@ -63,7 +63,7 @@ int main() return; } - auto signals = boost::asio::signal_set{service, SIGINT}; + auto signals = asio::signal_set{service, SIGINT}; signals.async_wait([&](auto const &error, auto const signal) { if (!error && signal == SIGINT) { |
