feat(mpd): Allow for specifying the reconnect interval

pull/268/head
Minijackson 2019-04-17 11:01:35 +02:00
parent 8c9dd94670
commit 557b786ce0
No known key found for this signature in database
GPG Key ID: FEA888C9F5D64F62
2 changed files with 8 additions and 6 deletions

View File

@ -27,7 +27,8 @@ class MPD : public ALabel {
// Not using unique_ptr since we don't manage the pointer // Not using unique_ptr since we don't manage the pointer
// (It's either nullptr, or from the config) // (It's either nullptr, or from the config)
const char* server; const char* server_;
unsigned port_;
unique_connection connection_; unique_connection connection_;
unique_status status_; unique_status status_;

View File

@ -3,8 +3,9 @@
#include <iostream> #include <iostream>
waybar::modules::MPD::MPD(const std::string& id, const Json::Value &config) waybar::modules::MPD::MPD(const std::string& id, const Json::Value &config)
: ALabel(config, "{album} - {artist} - {title}", 2), : ALabel(config, "{album} - {artist} - {title}", 5),
server(nullptr), server_(nullptr),
port_(config["port"].asUInt()),
connection_(nullptr, &mpd_connection_free), connection_(nullptr, &mpd_connection_free),
status_(nullptr, &mpd_status_free), status_(nullptr, &mpd_status_free),
song_(nullptr, &mpd_song_free) { song_(nullptr, &mpd_song_free) {
@ -14,7 +15,7 @@ waybar::modules::MPD::MPD(const std::string& id, const Json::Value &config)
} }
if (!config["server"].isNull()) { if (!config["server"].isNull()) {
server = config["server"].asCString(); server_ = config["server"].asCString();
} }
worker_ = worker(); worker_ = worker();
@ -40,7 +41,7 @@ std::thread waybar::modules::MPD::worker() {
if (connection_ == nullptr) { if (connection_ == nullptr) {
// Retry periodically if no connection // Retry periodically if no connection
update(); update();
std::this_thread::sleep_for(std::chrono::seconds(2)); std::this_thread::sleep_for(interval_);
} else { } else {
// Else, update on any event // Else, update on any event
waitForEvent(); waitForEvent();
@ -117,7 +118,7 @@ void waybar::modules::MPD::tryConnect() {
} }
connection_ = unique_connection( connection_ = unique_connection(
mpd_connection_new(server, config_["port"].asUInt(), 5'000), mpd_connection_new(server_, port_, 5'000),
&mpd_connection_free); &mpd_connection_free);
if (connection_ == nullptr) { if (connection_ == nullptr) {