diff options
author | Max Kellermann <max@duempel.org> | 2014-01-24 16:18:50 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2014-01-24 16:38:44 +0100 |
commit | 9d34fc394ce30a28ec0e43f2ad7172b8de8b3be6 (patch) | |
tree | 4b58951bc81b17f16140c7f743a163bd837827bf /src/update/InotifyQueue.cxx | |
parent | 973c9872f930d73a8ddc98e4802b242aea9f0dba (diff) | |
download | mpd-9d34fc394ce30a28ec0e43f2ad7172b8de8b3be6.tar.gz mpd-9d34fc394ce30a28ec0e43f2ad7172b8de8b3be6.tar.xz mpd-9d34fc394ce30a28ec0e43f2ad7172b8de8b3be6.zip |
Database*: move to db/
Diffstat (limited to 'src/update/InotifyQueue.cxx')
-rw-r--r-- | src/update/InotifyQueue.cxx | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/src/update/InotifyQueue.cxx b/src/update/InotifyQueue.cxx deleted file mode 100644 index f4bccf7ae..000000000 --- a/src/update/InotifyQueue.cxx +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Copyright (C) 2003-2014 The Music Player Daemon Project - * http://www.musicpd.org - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - */ - -#include "config.h" -#include "InotifyQueue.hxx" -#include "InotifyDomain.hxx" -#include "UpdateGlue.hxx" -#include "Log.hxx" - -#include <string.h> - -/** - * Wait this long after the last change before calling - * update_enqueue(). This increases the probability that updates can - * be bundled. - */ -static constexpr unsigned INOTIFY_UPDATE_DELAY_S = 5; - -void -InotifyQueue::OnTimeout() -{ - unsigned id; - - while (!queue.empty()) { - const char *uri_utf8 = queue.front().c_str(); - - id = update_enqueue(uri_utf8, false); - if (id == 0) { - /* retry later */ - ScheduleSeconds(INOTIFY_UPDATE_DELAY_S); - return; - } - - FormatDebug(inotify_domain, "updating '%s' job=%u", - uri_utf8, id); - - queue.pop_front(); - } -} - -static bool -path_in(const char *path, const char *possible_parent) -{ - size_t length = strlen(possible_parent); - - return path[0] == 0 || - (memcmp(possible_parent, path, length) == 0 && - (path[length] == 0 || path[length] == '/')); -} - -void -InotifyQueue::Enqueue(const char *uri_utf8) -{ - ScheduleSeconds(INOTIFY_UPDATE_DELAY_S); - - for (auto i = queue.begin(), end = queue.end(); i != end;) { - const char *current_uri = i->c_str(); - - if (path_in(uri_utf8, current_uri)) - /* already enqueued */ - return; - - if (path_in(current_uri, uri_utf8)) - /* existing path is a sub-path of the new - path; we can dequeue the existing path and - update the new path instead */ - i = queue.erase(i); - else - ++i; - } - - queue.emplace_back(uri_utf8); -} |