Main MRPT website > C++ reference for MRPT 1.4.0
CFileSystemWatcher.h
Go to the documentation of this file.
1/* +---------------------------------------------------------------------------+
2 | Mobile Robot Programming Toolkit (MRPT) |
3 | http://www.mrpt.org/ |
4 | |
5 | Copyright (c) 2005-2016, Individual contributors, see AUTHORS file |
6 | See: http://www.mrpt.org/Authors - All rights reserved. |
7 | Released under BSD License. See details in http://www.mrpt.org/License |
8 +---------------------------------------------------------------------------+ */
9#ifndef CFileSystemWatcher_H
10#define CFileSystemWatcher_H
11
13#include <mrpt/system/os.h>
14#include <mrpt/system/threads.h>
16
17/*---------------------------------------------------------------
18 Class
19 ---------------------------------------------------------------*/
20namespace mrpt
21{
22 namespace system
23 {
24 /** This class subscribes to notifications of file system changes, thus it can be used to efficiently stay informed about changes in a directory tree.
25 * - Windows: Requires Windows 2000 or newer.
26 * - Linux: Requires kernel 2.6.13 or newer.
27 * Using this class in an old Linux or other unsoported system (Unix,etc...) has no effect, i.e. no notification will be ever received.
28 * \sa CDirectoryExplorer
29 * \ingroup mrpt_base_grp
30 */
32 {
33 public:
34 /** Each of the changes detected by utils::CFileSystemWatcher
35 */
37 {
39 path(), isDir(false),
40 eventModified(false), eventCloseWrite(false),
41 eventDeleted(false), eventMovedTo(false),
42 eventMovedFrom(false), eventCreated(false),
43 eventAccessed(false) {}
44
45 std::string path; //!< Complete path of the file/directory that has changed.
46 bool isDir; //!< Whether the event happened to a file or a directory.
54 };
55
56 typedef std::deque<TFileSystemChange> TFileSystemChangeList;
57
58 /** Creates the subscription to a specified path.
59 * \param path The file or directory to watch.
60 */
61 CFileSystemWatcher( const std::string &path );
62
63 /** Destructor
64 */
66
67 /** Call this method sometimes to get the list of changes in the watched directory.
68 * \sa processChange
69 */
71
72 private:
73 std::string m_watchedDirectory; //!< Ended in "/"
74 #ifdef MRPT_OS_WINDOWS
75 void *m_hNotif;
76 mrpt::system::TThreadHandle m_watchThread;
77 void thread_win32_watch(); //!< Watch thread; only needed in win32
79
80 #endif
81
82 #if defined(MRPT_OS_LINUX) || defined(MRPT_OS_APPLE)
83 int m_fd; //!< The fd returned by inotify_init.
84 int m_wd; //!< The fd of the watch.
85 #endif
86
87 }; // End of class def.
88
89 } // End of namespace
90} // End of namespace
91
92#endif
This class subscribes to notifications of file system changes, thus it can be used to efficiently sta...
CFileSystemWatcher(const std::string &path)
Creates the subscription to a specified path.
void getChanges(TFileSystemChangeList &out_list)
Call this method sometimes to get the list of changes in the watched directory.
std::string m_watchedDirectory
Ended in "/".
std::deque< TFileSystemChange > TFileSystemChangeList
virtual ~CFileSystemWatcher()
Destructor.
A thread-safe template queue for object passing between threads; for a template argument of T,...
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Each of the changes detected by utils::CFileSystemWatcher.
bool isDir
Whether the event happened to a file or a directory.
std::string path
Complete path of the file/directory that has changed.
This structure contains the information needed to interface the threads API on each platform:
Definition: threads.h:26



Page generated by Doxygen 1.9.6 for MRPT 1.4.0 SVN: at Wed Mar 22 06:08:57 UTC 2023