diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-18 20:38:09 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-18 20:38:09 +0000 |
commit | 33f8e3dfcc9c04c4aaa19757d8994161b650e040 (patch) | |
tree | 7a6065bacc7197182f1b22c6f37de6c1838aa08f /base/directory_watcher_inotify.cc | |
parent | 3083a622a26104514d1db147194cc8d9fa7c8752 (diff) | |
download | chromium_src-33f8e3dfcc9c04c4aaa19757d8994161b650e040.zip chromium_src-33f8e3dfcc9c04c4aaa19757d8994161b650e040.tar.gz chromium_src-33f8e3dfcc9c04c4aaa19757d8994161b650e040.tar.bz2 |
Cleanup in DirectoryWatcher:
- share more code between different platforms
- put more code inside anonymous namespace
- add more DISALLOW_COPY_AND_ASSIGNs
- small #include cleanup
Review URL: http://codereview.chromium.org/42343
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@12007 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/directory_watcher_inotify.cc')
-rw-r--r-- | base/directory_watcher_inotify.cc | 56 |
1 files changed, 24 insertions, 32 deletions
diff --git a/base/directory_watcher_inotify.cc b/base/directory_watcher_inotify.cc index 7e906fa..c365352 100644 --- a/base/directory_watcher_inotify.cc +++ b/base/directory_watcher_inotify.cc @@ -167,6 +167,8 @@ class InotifyReaderNotifyTask : public Task { private: DirectoryWatcher::Delegate* delegate_; FilePath path_; + + DISALLOW_COPY_AND_ASSIGN(InotifyReaderNotifyTask); }; InotifyReader::InotifyReader() @@ -264,21 +266,13 @@ void InotifyReader::OnInotifyEvent(inotify_event* event) { } } -} // namespace - -// Private implementation class implementing the behavior of DirectoryWatcher. -class DirectoryWatcher::Impl : public base::RefCounted<DirectoryWatcher::Impl> { +class DirectoryWatcherImpl : public DirectoryWatcher::PlatformDelegate { public: - Impl(DirectoryWatcher::Delegate* delegate) - : delegate_(delegate), - watch_(InotifyReader::kInvalidWatch) { - } - - ~Impl(); + DirectoryWatcherImpl() : watch_(InotifyReader::kInvalidWatch) {} + ~DirectoryWatcherImpl(); - // Register interest in any changes in |path|. - // Returns false on error. - bool Watch(const FilePath& path); + virtual bool Watch(const FilePath& path, DirectoryWatcher::Delegate* delegate, + bool recursive); private: // Delegate to notify upon changes. @@ -289,31 +283,19 @@ class DirectoryWatcher::Impl : public base::RefCounted<DirectoryWatcher::Impl> { // Watch returned by InotifyReader. InotifyReader::Watch watch_; + + DISALLOW_COPY_AND_ASSIGN(DirectoryWatcherImpl); }; -DirectoryWatcher::Impl::~Impl() { +DirectoryWatcherImpl::~DirectoryWatcherImpl() { if (watch_ != InotifyReader::kInvalidWatch) Singleton<InotifyReader>::get()->RemoveWatch(watch_, delegate_); } -bool DirectoryWatcher::Impl::Watch(const FilePath& path) { +bool DirectoryWatcherImpl::Watch(const FilePath& path, + DirectoryWatcher::Delegate* delegate, bool recursive) { DCHECK(watch_ == InotifyReader::kInvalidWatch); // Can only watch one path. - path_ = path; - watch_ = Singleton<InotifyReader>::get()->AddWatch(path, delegate_); - - return watch_ != InotifyReader::kInvalidWatch; -} - -DirectoryWatcher::DirectoryWatcher() { -} - -DirectoryWatcher::~DirectoryWatcher() { - // Declared in .cc file for access to ~DirectoryWatcher::Impl. -} - -bool DirectoryWatcher::Watch(const FilePath& path, - Delegate* delegate, bool recursive) { if (recursive) { // TODO(phajdan.jr): Support recursive watches. // Unfortunately inotify has no "native" support for them, but it can be @@ -324,6 +306,16 @@ bool DirectoryWatcher::Watch(const FilePath& path, NOTIMPLEMENTED(); return false; } - impl_ = new DirectoryWatcher::Impl(delegate); - return impl_->Watch(path); + + delegate_ = delegate; + path_ = path; + watch_ = Singleton<InotifyReader>::get()->AddWatch(path, delegate_); + + return watch_ != InotifyReader::kInvalidWatch; +} + +} // namespace + +DirectoryWatcher::DirectoryWatcher() { + impl_ = new DirectoryWatcherImpl(); } |