aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.vscode/settings.json5
-rw-r--r--CMakeLists.txt3
-rw-r--r--cmake/Modules/ConanDependencies.cmake1
-rw-r--r--conanfile.py8
-rw-r--r--src/commander.cpp4
-rw-r--r--src/commander.hpp11
-rw-r--r--src/control_connection.cpp8
-rw-r--r--src/control_connection.hpp11
-rw-r--r--src/control_interface.cpp21
-rw-r--r--src/control_interface.hpp17
-rw-r--r--src/wandac.cpp4
-rw-r--r--src/wandad.cpp6
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)
{