| // Copyright 2020 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CROSLOG_FILE_CHANGE_WATCHER_H_ |
| #define CROSLOG_FILE_CHANGE_WATCHER_H_ |
| |
| #include "base/callback.h" |
| #include "base/files/file_path.h" |
| #include "base/memory/singleton.h" |
| #include "base/observer_list_types.h" |
| namespace croslog { |
| |
| class InotifyReader; |
| |
| class FileChangeWatcher { |
| public: |
| static FileChangeWatcher* GetInstance(); |
| |
| class Observer : public base::CheckedObserver { |
| public: |
| virtual void OnFileContentMaybeChanged() = 0; |
| virtual void OnFileNameMaybeChanged() = 0; |
| }; |
| |
| // Add a handler to retrieve file change events. |
| virtual bool AddWatch(const base::FilePath& path, Observer* observer) = 0; |
| // Remove a handler to retrieve file change events. |
| virtual void RemoveWatch(const base::FilePath& path) = 0; |
| |
| protected: |
| FileChangeWatcher(); |
| FileChangeWatcher(const FileChangeWatcher&) = delete; |
| FileChangeWatcher& operator=(const FileChangeWatcher&) = delete; |
| }; |
| |
| } // namespace croslog |
| |
| #endif // CROSLOG_FILE_CHANGE_WATCHER_H_ |