aboutsummaryrefslogtreecommitdiff
path: root/source/app
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@gmail.com>2023-08-17 12:32:50 +0200
committerFelix Morgner <felix.morgner@gmail.com>2023-08-17 12:32:50 +0200
commit375799fa79d1af76f33299acc20a11a167a021f8 (patch)
tree8f91b982ec96225c33a2f4871730ababffe5cab0 /source/app
parentaf471b9b780869915d3217b228e24d025892de47 (diff)
downloadwanda-375799fa79d1af76f33299acc20a11a167a021f8.tar.xz
wanda-375799fa79d1af76f33299acc20a11a167a021f8.zip
project: restructure libraries and build env
Diffstat (limited to 'source/app')
-rw-r--r--source/app/CMakeLists.txt41
-rw-r--r--source/app/src/wandac.cpp39
-rw-r--r--source/app/src/wandad.cpp121
3 files changed, 104 insertions, 97 deletions
diff --git a/source/app/CMakeLists.txt b/source/app/CMakeLists.txt
index a224b57..7fd46c2 100644
--- a/source/app/CMakeLists.txt
+++ b/source/app/CMakeLists.txt
@@ -2,42 +2,55 @@ include("CheckIPOSupported")
check_ipo_supported(RESULT "WANDA_IPO_SUPPORTED")
+find_package("asio")
find_package("lyra")
+find_package("spdlog")
-#[=====[ Server ]=====]
+#[=====[ Client ]=====]
-add_executable("wandad"
- "src/wandad.cpp"
+add_executable("wandac"
+ "src/wandac.cpp"
)
-target_link_libraries("wandad" PRIVATE
+target_link_libraries("${PROJECT_NAME}c" PRIVATE
+ "wanda::control"
+ "wanda::proto"
+ "wanda::system"
+
+ "asio::asio"
"bfg::lyra"
- "wanda::wanda"
+ "spdlog::spdlog"
)
-set_target_properties("wandad" PROPERTIES
+set_target_properties("wandac" PROPERTIES
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS OFF
INTERPROCEDURAL_OPTIMIZATION ${WANDA_IPO_SUPPORTED}
)
-install(TARGETS "wandad")
+install(TARGETS "wandac")
-#[=====[ Client ]=====]
+#[=====[ Server ]=====]
-add_executable("wandac"
- "src/wandac.cpp"
+add_executable("wandad"
+ "src/wandad.cpp"
)
-target_link_libraries("${PROJECT_NAME}c" PRIVATE
+target_link_libraries("wandad" PRIVATE
+ "wanda::control"
+ "wanda::proto"
+ "wanda::std_ext"
+ "wanda::system"
+
+ "asio::asio"
"bfg::lyra"
- "wanda::wanda"
+ "spdlog::spdlog"
)
-set_target_properties("wandac" PROPERTIES
+set_target_properties("wandad" PROPERTIES
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS OFF
INTERPROCEDURAL_OPTIMIZATION ${WANDA_IPO_SUPPORTED}
)
-install(TARGETS "wandac") \ No newline at end of file
+install(TARGETS "wandad")
diff --git a/source/app/src/wandac.cpp b/source/app/src/wandac.cpp
index 1873ef4..ae24d0f 100644
--- a/source/app/src/wandac.cpp
+++ b/source/app/src/wandac.cpp
@@ -1,8 +1,8 @@
-#include <wanda/command.hpp>
-#include <wanda/commander.hpp>
-#include <wanda/environment.hpp>
-#include <wanda/logging.hpp>
-#include <wanda/xdg.hpp>
+#include <wanda/control/commander.hpp>
+#include <wanda/proto/command.hpp>
+#include <wanda/system/environment.hpp>
+#include <wanda/system/logging.hpp>
+#include <wanda/system/xdg.hpp>
#include <asio.hpp>
#include <lyra/lyra.hpp>
@@ -23,18 +23,13 @@ struct cli
auto parse(int argc, char const * const * argv, std::ostream & error)
{
- parser |= lyra::arg{command, "command"}("The command to send to the deamon").required() |
- lyra::help(help);
+ parser |= lyra::arg{command, "command"}("The command to send to the deamon").required() | lyra::help(help);
auto result = parser.parse({argc, argv});
if (!result)
{
- error << "Error while processing command line arguments: "
- << result.message()
- << '\n'
- << parser
- << '\n';
+ error << "Error while processing command line arguments: " << result.message() << '\n' << parser << '\n';
return false;
}
@@ -42,7 +37,7 @@ struct cli
}
};
-struct listener : wanda::commander::listener
+struct listener : wanda::control::commander::listener
{
listener(::cli & cli, asio::io_service & service)
: m_cli{cli}
@@ -50,14 +45,12 @@ struct listener : wanda::commander::listener
{
}
- void on_connected(wanda::commander & commander) override
+ void on_connected(wanda::control::commander & commander) override
{
if (m_cli.command == "change")
{
- commander.send(wanda::make_change_command());
- m_service.post([&]{
- commander.stop();
- });
+ commander.send(wanda::proto::make_change_command());
+ m_service.post([&] { commander.stop(); });
}
}
@@ -79,15 +72,17 @@ int main(int argc, char const * const * argv)
return EXIT_SUCCESS;
}
- wanda::initialize_logger(std::make_shared<spdlog::sinks::stderr_color_sink_st>());
+ wanda::system::initialize_logger(std::make_shared<spdlog::sinks::stderr_color_sink_st>());
- auto interface = wanda::xdg_path_for(wanda::xdg_directory::runtime_dir, wanda::environment{}) / ".wanda_interface";
+ auto interface =
+ wanda::system::xdg_path_for(wanda::system::xdg_directory::runtime_dir, wanda::system::environment{}) /
+ ".wanda_interface";
auto service = asio::io_service{};
auto listener = ::listener{cli, service};
- auto commander = wanda::commander{service, interface, listener};
+ auto commander = wanda::control::commander{service, interface, listener};
- wanda::get_logger()->info("trying to connect to wanda control interface on '{}'", interface.native());
+ wanda::system::get_logger()->info("trying to connect to wanda control interface on '{}'", interface.native());
commander.start();
service.run();
diff --git a/source/app/src/wandad.cpp b/source/app/src/wandad.cpp
index 8579a83..a610b8a 100644
--- a/source/app/src/wandad.cpp
+++ b/source/app/src/wandad.cpp
@@ -1,12 +1,12 @@
-#include <wanda/command.hpp>
-#include <wanda/control_interface.hpp>
-#include <wanda/environment.hpp>
-#include <wanda/filesystem.hpp>
-#include <wanda/logging.hpp>
-#include <wanda/optional.hpp>
-#include <wanda/setting.hpp>
-#include <wanda/wallpaper.hpp>
-#include <wanda/xdg.hpp>
+#include <wanda/control/interface.hpp>
+#include <wanda/proto/command.hpp>
+#include <wanda/std_ext/optional.hpp>
+#include <wanda/system/environment.hpp>
+#include <wanda/system/filesystem.hpp>
+#include <wanda/system/logging.hpp>
+#include <wanda/system/setting.hpp>
+#include <wanda/system/wallpaper.hpp>
+#include <wanda/system/xdg.hpp>
#include <asio.hpp>
#include <lyra/lyra.hpp>
@@ -43,18 +43,14 @@ namespace
auto parse(int argc, char const * const * argv, std::ostream & error)
{
- parser |= lyra::arg{wallpaper_directory, "directory"}("The wallpaper source directory").required() |
- lyra::help(help);
+ parser |=
+ lyra::arg{wallpaper_directory, "directory"}("The wallpaper source directory").required() | lyra::help(help);
auto result = parser.parse({argc, argv});
if (!result)
{
- error << "Error while processing command line arguments: "
- << result.message()
- << '\n'
- << parser
- << '\n';
+ error << "Error while processing command line arguments: " << result.message() << '\n' << parser << '\n';
return false;
}
@@ -62,25 +58,25 @@ namespace
}
};
- struct listener : wanda::control_interface::listener
+ struct listener : wanda::control::interface::listener
{
listener(std::vector<std::filesystem::path> const & wallpapers)
: m_wallpapers{wallpapers}
{
}
- void on_received(wanda::control_interface & interface, wanda::command command) override
+ void on_received(wanda::control::interface & interface, wanda::proto::command command) override
{
switch (command.id)
{
- case wanda::command_id::change: {
- auto wallpaper = wanda::random_pick(m_wallpapers);
- wanda::get_logger()->info("changing wallpaper to '{}'", wallpaper.native());
- wanda::set_wallpaper(wallpaper);
+ case wanda::proto::command_id::change: {
+ auto wallpaper = wanda::system::random_pick(m_wallpapers);
+ wanda::system::get_logger()->info("changing wallpaper to '{}'", wallpaper.native());
+ wanda::system::set_wallpaper(wallpaper);
break;
}
default:
- wanda::get_logger()->error("received unknown command '{}'", static_cast<int>(command.id));
+ wanda::system::get_logger()->error("received unknown command '{}'", static_cast<int>(command.id));
}
}
@@ -105,42 +101,45 @@ int main(int argc, char const * const * argv)
return EXIT_SUCCESS;
}
- wanda::initialize_logger(std::make_shared<spdlog::sinks::stdout_color_sink_st>());
- wanda::get_logger()->info("wanda is starting up");
-
- with(wanda::scan({cli.wallpaper_directory}, image_filter), [&](auto const & list) {
- auto service = asio::io_service{};
- auto socket_path = wanda::xdg_path_for(wanda::xdg_directory::runtime_dir, wanda::environment{}) / ".wanda_interface";
-
- wanda::get_logger()->info("starting control interface on '{}'", socket_path.native());
- auto listener = ::listener{list};
- auto interface = wanda::make_interface(service, socket_path, listener);
-
- if (!interface)
- {
- wanda::get_logger()->error("failed to start control interface");
- return;
- }
-
- if (interface->start())
- {
- return;
- }
-
- auto signals = asio::signal_set{service, SIGINT, SIGTERM};
- signals.async_wait([&](auto const & error, auto const signal) {
- if (!error)
- {
- wanda::get_logger()->info("Received signal {}. terminating...", signal);
- interface->shutdown();
- service.stop();
- }
- });
-
- auto wallpaper = wanda::random_pick(list);
- wanda::set_wallpaper(wallpaper);
-
- service.run();
- }) ||
- [&] { wanda::get_logger()->error("wallpaper directory does not exist"); };
+ wanda::system::initialize_logger(std::make_shared<spdlog::sinks::stdout_color_sink_st>());
+ wanda::system::get_logger()->info("wanda is starting up");
+
+ with(wanda::system::scan({cli.wallpaper_directory}, image_filter),
+ [&](auto const & list) {
+ auto service = asio::io_service{};
+ auto socket_path =
+ wanda::system::xdg_path_for(wanda::system::xdg_directory::runtime_dir, wanda::system::environment{}) /
+ ".wanda_interface";
+
+ wanda::system::get_logger()->info("starting control interface on '{}'", socket_path.native());
+ auto listener = ::listener{list};
+ auto interface = wanda::control::make_interface(service, socket_path, listener);
+
+ if (!interface)
+ {
+ wanda::system::get_logger()->error("failed to start control interface");
+ return;
+ }
+
+ if (interface->start())
+ {
+ return;
+ }
+
+ auto signals = asio::signal_set{service, SIGINT, SIGTERM};
+ signals.async_wait([&](auto const & error, auto const signal) {
+ if (!error)
+ {
+ wanda::system::get_logger()->info("Received signal {}. terminating...", signal);
+ interface->shutdown();
+ service.stop();
+ }
+ });
+
+ auto wallpaper = wanda::system::random_pick(list);
+ wanda::system::set_wallpaper(wallpaper);
+
+ service.run();
+ }) ||
+ [&] { wanda::system::get_logger()->error("wallpaper directory does not exist"); };
}