<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>incron: inotify-cxx.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> <link href="tabs.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.5.6 --> <div class="navigation" id="top"> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="annotated.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> </ul> </div> <h1>inotify-cxx.h</h1><a href="inotify-cxx_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <a name="l00003"></a>00003 <a name="l00026"></a>00026 <span class="preprocessor">#ifndef _INOTIFYCXX_H_</span> <a name="l00027"></a>00027 <span class="preprocessor"></span><span class="preprocessor">#define _INOTIFYCXX_H_</span> <a name="l00028"></a>00028 <span class="preprocessor"></span> <a name="l00029"></a>00029 <span class="preprocessor">#include <stdint.h></span> <a name="l00030"></a>00030 <span class="preprocessor">#include <string></span> <a name="l00031"></a>00031 <span class="preprocessor">#include <deque></span> <a name="l00032"></a>00032 <span class="preprocessor">#include <map></span> <a name="l00033"></a>00033 <a name="l00034"></a>00034 <span class="comment">// Please ensure that the following headers take the right place</span> <a name="l00035"></a>00035 <span class="preprocessor">#include <sys/syscall.h></span> <a name="l00036"></a>00036 <span class="preprocessor">#include <sys/inotify.h></span> <a name="l00037"></a>00037 <a name="l00038"></a>00038 <span class="comment">// Use this if syscalls not defined</span> <a name="l00039"></a>00039 <span class="preprocessor">#ifndef __NR_inotify_init</span> <a name="l00040"></a>00040 <span class="preprocessor"></span><span class="preprocessor">#include <sys/inotify-syscalls.h></span> <a name="l00041"></a>00041 <span class="preprocessor">#endif // __NR_inotify_init</span> <a name="l00042"></a>00042 <span class="preprocessor"></span> <a name="l00044"></a><a class="code" href="inotify-cxx_8h.html#f64b4cc985ba26f31a9cb242153a5014">00044</a> <span class="preprocessor">#define INOTIFY_EVENT_SIZE (sizeof(struct inotify_event))</span> <a name="l00045"></a>00045 <span class="preprocessor"></span> <a name="l00047"></a><a class="code" href="inotify-cxx_8h.html#a84911f8e42d71161b60d4a28940abb4">00047</a> <span class="preprocessor">#define INOTIFY_BUFLEN (1024 * (INOTIFY_EVENT_SIZE + 16))</span> <a name="l00048"></a>00048 <span class="preprocessor"></span> <a name="l00050"></a>00050 <a name="l00053"></a><a class="code" href="inotify-cxx_8h.html#fe6b93f7e09db7022f1f9dd102932e12">00053</a> <span class="preprocessor">#define IN_EXC_MSG(msg) (std::string(__PRETTY_FUNCTION__) + ": " + msg)</span> <a name="l00054"></a>00054 <span class="preprocessor"></span> <a name="l00056"></a><a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d">00056</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a name="l00057"></a>00057 { <a name="l00058"></a><a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d18e969c9c44523b38a13b0a207286dd1">00058</a> <a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d18e969c9c44523b38a13b0a207286dd1" title="max. events in the kernel queue">IN_MAX_EVENTS</a> = 0, <a name="l00059"></a><a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d43cc45296a9afe5cb68f568176608dd9">00059</a> <a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d43cc45296a9afe5cb68f568176608dd9" title="max. inotify file descriptors per process">IN_MAX_INSTANCES</a> = 1, <a name="l00060"></a><a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d594390780d2bdcec064c00aec1f20429">00060</a> <a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d594390780d2bdcec064c00aec1f20429" title="max. watches per file descriptor">IN_MAX_WATCHES</a> = 2 <a name="l00061"></a>00061 } <a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d" title="inotify capability/limit identifiers">InotifyCapability_t</a>; <a name="l00062"></a>00062 <a name="l00064"></a>00064 <a name="l00082"></a>00082 <span class="preprocessor">#ifdef INOTIFY_THREAD_SAFE</span> <a name="l00083"></a>00083 <span class="preprocessor"></span> <a name="l00084"></a>00084 <span class="preprocessor">#include <pthread.h></span> <a name="l00085"></a>00085 <a name="l00086"></a>00086 <span class="preprocessor">#define IN_LOCK_DECL mutable pthread_rwlock_t __m_lock;</span> <a name="l00087"></a>00087 <span class="preprocessor"></span> <a name="l00088"></a>00088 <span class="preprocessor">#define IN_LOCK_INIT \</span> <a name="l00089"></a>00089 <span class="preprocessor"> { \</span> <a name="l00090"></a>00090 <span class="preprocessor"> pthread_rwlockattr_t attr; \</span> <a name="l00091"></a>00091 <span class="preprocessor"> int res = 0; \</span> <a name="l00092"></a>00092 <span class="preprocessor"> if ((res = pthread_rwlockattr_init(&attr)) != 0) \</span> <a name="l00093"></a>00093 <span class="preprocessor"> throw InotifyException(IN_EXC_MSG("cannot initialize lock attributes"), res, this); \</span> <a name="l00094"></a>00094 <span class="preprocessor"> if ((res = pthread_rwlockattr_setkind_np(&attr, PTHREAD_RWLOCK_PREFER_WRITER_NP)) != 0) \</span> <a name="l00095"></a>00095 <span class="preprocessor"> throw InotifyException(IN_EXC_MSG("cannot set lock kind"), res, this); \</span> <a name="l00096"></a>00096 <span class="preprocessor"> if ((res = pthread_rwlock_init(&__m_lock, &attr)) != 0) \</span> <a name="l00097"></a>00097 <span class="preprocessor"> throw InotifyException(IN_EXC_MSG("cannot initialize lock"), res, this); \</span> <a name="l00098"></a>00098 <span class="preprocessor"> pthread_rwlockattr_destroy(&attr); \</span> <a name="l00099"></a>00099 <span class="preprocessor"> }</span> <a name="l00100"></a>00100 <span class="preprocessor"></span> <a name="l00101"></a>00101 <span class="preprocessor">#define IN_LOCK_DONE pthread_rwlock_destroy(&__m_lock);</span> <a name="l00102"></a>00102 <span class="preprocessor"></span> <a name="l00103"></a>00103 <span class="preprocessor">#define IN_READ_BEGIN \</span> <a name="l00104"></a>00104 <span class="preprocessor"> { \</span> <a name="l00105"></a>00105 <span class="preprocessor"> int res = pthread_rwlock_rdlock(&__m_lock); \</span> <a name="l00106"></a>00106 <span class="preprocessor"> if (res != 0) \</span> <a name="l00107"></a>00107 <span class="preprocessor"> throw InotifyException(IN_EXC_MSG("locking for reading failed"), res, (void*) this); \</span> <a name="l00108"></a>00108 <span class="preprocessor"> }</span> <a name="l00109"></a>00109 <span class="preprocessor"></span> <a name="l00110"></a>00110 <span class="preprocessor">#define IN_READ_END \</span> <a name="l00111"></a>00111 <span class="preprocessor"> { \</span> <a name="l00112"></a>00112 <span class="preprocessor"> int res = pthread_rwlock_unlock(&__m_lock); \</span> <a name="l00113"></a>00113 <span class="preprocessor"> if (res != 0) \</span> <a name="l00114"></a>00114 <span class="preprocessor"> throw InotifyException(IN_EXC_MSG("unlocking failed"), res, (void*) this); \</span> <a name="l00115"></a>00115 <span class="preprocessor"> }</span> <a name="l00116"></a>00116 <span class="preprocessor"></span> <a name="l00117"></a>00117 <span class="preprocessor">#define IN_READ_END_NOTHROW pthread_rwlock_unlock(&__m_lock);</span> <a name="l00118"></a>00118 <span class="preprocessor"></span> <a name="l00119"></a>00119 <span class="preprocessor">#define IN_WRITE_BEGIN \</span> <a name="l00120"></a>00120 <span class="preprocessor"> { \</span> <a name="l00121"></a>00121 <span class="preprocessor"> int res = pthread_rwlock_wrlock(&__m_lock); \</span> <a name="l00122"></a>00122 <span class="preprocessor"> if (res != 0) \</span> <a name="l00123"></a>00123 <span class="preprocessor"> throw InotifyException(IN_EXC_MSG("locking for writing failed"), res, (void*) this); \</span> <a name="l00124"></a>00124 <span class="preprocessor"> }</span> <a name="l00125"></a>00125 <span class="preprocessor"></span> <a name="l00126"></a>00126 <span class="preprocessor">#define IN_WRITE_END IN_READ_END</span> <a name="l00127"></a>00127 <span class="preprocessor"></span><span class="preprocessor">#define IN_WRITE_END_NOTHROW IN_READ_END_NOTHROW</span> <a name="l00128"></a>00128 <span class="preprocessor"></span> <a name="l00129"></a>00129 <span class="preprocessor">#else // INOTIFY_THREAD_SAFE</span> <a name="l00130"></a>00130 <span class="preprocessor"></span> <a name="l00131"></a><a class="code" href="inotify-cxx_8h.html#904d25c0fd931e1bad4f9d5cd346a766">00131</a> <span class="preprocessor">#define IN_LOCK_DECL</span> <a name="l00132"></a><a class="code" href="inotify-cxx_8h.html#981aa546075fba39715fd2f63a41f575">00132</a> <span class="preprocessor"></span><span class="preprocessor">#define IN_LOCK_INIT</span> <a name="l00133"></a><a class="code" href="inotify-cxx_8h.html#08422ec66fb587c1684afbaa575a53dd">00133</a> <span class="preprocessor"></span><span class="preprocessor">#define IN_LOCK_DONE</span> <a name="l00134"></a><a class="code" href="inotify-cxx_8h.html#963a97dc42487e86715b4e04639b0db8">00134</a> <span class="preprocessor"></span><span class="preprocessor">#define IN_READ_BEGIN</span> <a name="l00135"></a><a class="code" href="inotify-cxx_8h.html#0b82080ab6709175341b97e1f3c3955d">00135</a> <span class="preprocessor"></span><span class="preprocessor">#define IN_READ_END</span> <a name="l00136"></a><a class="code" href="inotify-cxx_8h.html#5c6a5be1898ef17662795cc4b420c851">00136</a> <span class="preprocessor"></span><span class="preprocessor">#define IN_READ_END_NOTHROW</span> <a name="l00137"></a><a class="code" href="inotify-cxx_8h.html#c3a6d87ace9403f7ac58f931bbcd9599">00137</a> <span class="preprocessor"></span><span class="preprocessor">#define IN_WRITE_BEGIN</span> <a name="l00138"></a><a class="code" href="inotify-cxx_8h.html#f8aeac51b3b4ef56f1791c5c1a2e9cf5">00138</a> <span class="preprocessor"></span><span class="preprocessor">#define IN_WRITE_END</span> <a name="l00139"></a><a class="code" href="inotify-cxx_8h.html#7e68c4884137939c5e3301f40c198dc7">00139</a> <span class="preprocessor"></span><span class="preprocessor">#define IN_WRITE_END_NOTHROW</span> <a name="l00140"></a>00140 <span class="preprocessor"></span> <a name="l00141"></a>00141 <span class="preprocessor">#endif // INOTIFY_THREAD_SAFE</span> <a name="l00142"></a>00142 <span class="preprocessor"></span> <a name="l00143"></a>00143 <a name="l00144"></a>00144 <a name="l00145"></a>00145 <a name="l00146"></a>00146 <span class="comment">// forward declaration</span> <a name="l00147"></a>00147 <span class="keyword">class </span><a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>; <a name="l00148"></a>00148 <span class="keyword">class </span><a class="code" href="classInotify.html" title="inotify class">Inotify</a>; <a name="l00149"></a>00149 <a name="l00150"></a>00150 <a name="l00152"></a>00152 <a name="l00160"></a><a class="code" href="classInotifyException.html">00160</a> <span class="keyword">class </span><a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a> <a name="l00161"></a>00161 { <a name="l00162"></a>00162 <span class="keyword">public</span>: <a name="l00164"></a>00164 <a name="l00169"></a><a class="code" href="classInotifyException.html#900dc29e5cfb3ece6c1651d04773b2bb">00169</a> <a class="code" href="classInotifyException.html#900dc29e5cfb3ece6c1651d04773b2bb" title="Constructor.">InotifyException</a>(<span class="keyword">const</span> std::string& rMsg = <span class="stringliteral">""</span>, <span class="keywordtype">int</span> iErr = 0, <span class="keywordtype">void</span>* pSrc = NULL) <a name="l00170"></a>00170 : <a class="code" href="classInotifyException.html#c113719bd6f4352e12876b2322f1c92c" title="message">m_msg</a>(rMsg), <a name="l00171"></a>00171 <a class="code" href="classInotifyException.html#aa8a163c661ce70e34b3e3e7ad700854" title="error number">m_err</a>(iErr) <a name="l00172"></a>00172 { <a name="l00173"></a>00173 <a class="code" href="classInotifyException.html#dd106c2255890025561245cf91fe1427" title="source">m_pSrc</a> = pSrc; <a name="l00174"></a>00174 } <a name="l00175"></a>00175 <a name="l00177"></a>00177 <a name="l00180"></a><a class="code" href="classInotifyException.html#6364ea375697356805d47cff957dd757">00180</a> <span class="keyword">inline</span> <span class="keyword">const</span> std::string& <a class="code" href="classInotifyException.html#6364ea375697356805d47cff957dd757" title="Returns the exception message.">GetMessage</a>()<span class="keyword"> const</span> <a name="l00181"></a>00181 <span class="keyword"> </span>{ <a name="l00182"></a>00182 <span class="keywordflow">return</span> <a class="code" href="classInotifyException.html#c113719bd6f4352e12876b2322f1c92c" title="message">m_msg</a>; <a name="l00183"></a>00183 } <a name="l00184"></a>00184 <a name="l00186"></a>00186 <a name="l00191"></a><a class="code" href="classInotifyException.html#60d885f998a6cb97d06111e6aded155d">00191</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classInotifyException.html#60d885f998a6cb97d06111e6aded155d" title="Returns the exception error number.">GetErrorNumber</a>()<span class="keyword"> const</span> <a name="l00192"></a>00192 <span class="keyword"> </span>{ <a name="l00193"></a>00193 <span class="keywordflow">return</span> <a class="code" href="classInotifyException.html#aa8a163c661ce70e34b3e3e7ad700854" title="error number">m_err</a>; <a name="l00194"></a>00194 } <a name="l00195"></a>00195 <a name="l00197"></a>00197 <a name="l00200"></a><a class="code" href="classInotifyException.html#619e8b963faebdefb283d79b5ae5c408">00200</a> <span class="keyword">inline</span> <span class="keywordtype">void</span>* <a class="code" href="classInotifyException.html#619e8b963faebdefb283d79b5ae5c408" title="Returns the exception source.">GetSource</a>()<span class="keyword"> const</span> <a name="l00201"></a>00201 <span class="keyword"> </span>{ <a name="l00202"></a>00202 <span class="keywordflow">return</span> <a class="code" href="classInotifyException.html#dd106c2255890025561245cf91fe1427" title="source">m_pSrc</a>; <a name="l00203"></a>00203 } <a name="l00204"></a>00204 <a name="l00205"></a>00205 <span class="keyword">protected</span>: <a name="l00206"></a><a class="code" href="classInotifyException.html#c113719bd6f4352e12876b2322f1c92c">00206</a> std::string <a class="code" href="classInotifyException.html#c113719bd6f4352e12876b2322f1c92c" title="message">m_msg</a>; <a name="l00207"></a><a class="code" href="classInotifyException.html#aa8a163c661ce70e34b3e3e7ad700854">00207</a> <span class="keywordtype">int</span> <a class="code" href="classInotifyException.html#aa8a163c661ce70e34b3e3e7ad700854" title="error number">m_err</a>; <a name="l00208"></a><a class="code" href="classInotifyException.html#dd106c2255890025561245cf91fe1427">00208</a> <span class="keyword">mutable</span> <span class="keywordtype">void</span>* <a class="code" href="classInotifyException.html#dd106c2255890025561245cf91fe1427" title="source">m_pSrc</a>; <a name="l00209"></a>00209 }; <a name="l00210"></a>00210 <a name="l00211"></a>00211 <a name="l00213"></a>00213 <a name="l00221"></a><a class="code" href="classInotifyEvent.html">00221</a> <span class="keyword">class </span><a class="code" href="classInotifyEvent.html" title="inotify event class">InotifyEvent</a> <a name="l00222"></a>00222 { <a name="l00223"></a>00223 <span class="keyword">public</span>: <a name="l00225"></a>00225 <a name="l00228"></a><a class="code" href="classInotifyEvent.html#f416dbbd4e6ddd3c0eea6cb540f0b046">00228</a> <a class="code" href="classInotifyEvent.html#f416dbbd4e6ddd3c0eea6cb540f0b046" title="Constructor.">InotifyEvent</a>() <a name="l00229"></a>00229 : m_uMask(0), <a name="l00230"></a>00230 m_uCookie(0) <a name="l00231"></a>00231 { <a name="l00232"></a>00232 m_pWatch = NULL; <a name="l00233"></a>00233 } <a name="l00234"></a>00234 <a name="l00236"></a>00236 <a name="l00243"></a><a class="code" href="classInotifyEvent.html#6d7f3fc0f51580da4a3ec2348609df64">00243</a> <a class="code" href="classInotifyEvent.html#f416dbbd4e6ddd3c0eea6cb540f0b046" title="Constructor.">InotifyEvent</a>(<span class="keyword">const</span> <span class="keyword">struct</span> inotify_event* pEvt, <a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>* pWatch) <a name="l00244"></a>00244 : m_uMask(0), <a name="l00245"></a>00245 m_uCookie(0) <a name="l00246"></a>00246 { <a name="l00247"></a>00247 <span class="keywordflow">if</span> (pEvt != NULL) { <a name="l00248"></a>00248 m_uMask = (uint32_t) pEvt->mask; <a name="l00249"></a>00249 m_uCookie = (uint32_t) pEvt->cookie; <a name="l00250"></a>00250 <span class="keywordflow">if</span> (pEvt->name != NULL) { <a name="l00251"></a>00251 m_name = pEvt->len > 0 <a name="l00252"></a>00252 ? pEvt->name <a name="l00253"></a>00253 : <span class="stringliteral">""</span>; <a name="l00254"></a>00254 } <a name="l00255"></a>00255 m_pWatch = pWatch; <a name="l00256"></a>00256 } <a name="l00257"></a>00257 <span class="keywordflow">else</span> { <a name="l00258"></a>00258 m_pWatch = NULL; <a name="l00259"></a>00259 } <a name="l00260"></a>00260 } <a name="l00261"></a>00261 <a name="l00263"></a><a class="code" href="classInotifyEvent.html#a48030da1d3a1b1741ca791c9e129888">00263</a> <a class="code" href="classInotifyEvent.html#a48030da1d3a1b1741ca791c9e129888" title="Destructor.">~InotifyEvent</a>() {} <a name="l00264"></a>00264 <a name="l00266"></a>00266 <a name="l00271"></a>00271 int32_t <a class="code" href="classInotifyEvent.html#463aacc1f660fbc1c39108feb2601341" title="Returns the event watch descriptor.">GetDescriptor</a>() <span class="keyword">const</span>; <a name="l00272"></a>00272 <a name="l00274"></a>00274 <a name="l00279"></a><a class="code" href="classInotifyEvent.html#c7160544f6f4f24611df57a4422ac47f">00279</a> <span class="keyword">inline</span> uint32_t <a class="code" href="classInotifyEvent.html#c7160544f6f4f24611df57a4422ac47f" title="Returns the event mask.">GetMask</a>()<span class="keyword"> const</span> <a name="l00280"></a>00280 <span class="keyword"> </span>{ <a name="l00281"></a>00281 <span class="keywordflow">return</span> m_uMask; <a name="l00282"></a>00282 } <a name="l00283"></a>00283 <a name="l00285"></a>00285 <a name="l00290"></a><a class="code" href="classInotifyEvent.html#309ebf3c5b131522295185a926d551bb">00290</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">bool</span> <a class="code" href="classInotifyEvent.html#309ebf3c5b131522295185a926d551bb" title="Checks a value for the event type.">IsType</a>(uint32_t uValue, uint32_t uType) <a name="l00291"></a>00291 { <a name="l00292"></a>00292 <span class="keywordflow">return</span> ((uValue & uType) != 0) && ((~uValue & uType) == 0); <a name="l00293"></a>00293 } <a name="l00294"></a>00294 <a name="l00296"></a>00296 <a name="l00300"></a><a class="code" href="classInotifyEvent.html#477ae71116ec393434a1f62a7170a156">00300</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classInotifyEvent.html#309ebf3c5b131522295185a926d551bb" title="Checks a value for the event type.">IsType</a>(uint32_t uType)<span class="keyword"> const</span> <a name="l00301"></a>00301 <span class="keyword"> </span>{ <a name="l00302"></a>00302 <span class="keywordflow">return</span> <a class="code" href="classInotifyEvent.html#309ebf3c5b131522295185a926d551bb" title="Checks a value for the event type.">IsType</a>(m_uMask, uType); <a name="l00303"></a>00303 } <a name="l00304"></a>00304 <a name="l00306"></a>00306 <a name="l00309"></a><a class="code" href="classInotifyEvent.html#7e65e49f7d0f11c71442e31d688e4b17">00309</a> <span class="keyword">inline</span> uint32_t <a class="code" href="classInotifyEvent.html#7e65e49f7d0f11c71442e31d688e4b17" title="Returns the event cookie.">GetCookie</a>()<span class="keyword"> const</span> <a name="l00310"></a>00310 <span class="keyword"> </span>{ <a name="l00311"></a>00311 <span class="keywordflow">return</span> m_uCookie; <a name="l00312"></a>00312 } <a name="l00313"></a>00313 <a name="l00315"></a>00315 <a name="l00318"></a><a class="code" href="classInotifyEvent.html#30c8c2e1e490b8968ab9cb3364fe579a">00318</a> <span class="keyword">inline</span> uint32_t <a class="code" href="classInotifyEvent.html#30c8c2e1e490b8968ab9cb3364fe579a" title="Returns the event name length.">GetLength</a>()<span class="keyword"> const</span> <a name="l00319"></a>00319 <span class="keyword"> </span>{ <a name="l00320"></a>00320 <span class="keywordflow">return</span> (uint32_t) m_name.length(); <a name="l00321"></a>00321 } <a name="l00322"></a>00322 <a name="l00324"></a>00324 <a name="l00327"></a><a class="code" href="classInotifyEvent.html#5ab91d587bdc7ab3c18c6cdff73f3097">00327</a> <span class="keyword">inline</span> <span class="keyword">const</span> std::string& <a class="code" href="classInotifyEvent.html#5ab91d587bdc7ab3c18c6cdff73f3097" title="Returns the event name.">GetName</a>()<span class="keyword"> const</span> <a name="l00328"></a>00328 <span class="keyword"> </span>{ <a name="l00329"></a>00329 <span class="keywordflow">return</span> m_name; <a name="l00330"></a>00330 } <a name="l00331"></a>00331 <a name="l00333"></a>00333 <a name="l00336"></a><a class="code" href="classInotifyEvent.html#3aea2437ba8553be703d91b45247a68f">00336</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classInotifyEvent.html#5ab91d587bdc7ab3c18c6cdff73f3097" title="Returns the event name.">GetName</a>(std::string& rName)<span class="keyword"> const</span> <a name="l00337"></a>00337 <span class="keyword"> </span>{ <a name="l00338"></a>00338 rName = <a class="code" href="classInotifyEvent.html#5ab91d587bdc7ab3c18c6cdff73f3097" title="Returns the event name.">GetName</a>(); <a name="l00339"></a>00339 } <a name="l00340"></a>00340 <a name="l00342"></a>00342 <a name="l00345"></a><a class="code" href="classInotifyEvent.html#979cd46f53ed674331a5a6d47d1cde92">00345</a> <span class="keyword">inline</span> <a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>* <a class="code" href="classInotifyEvent.html#979cd46f53ed674331a5a6d47d1cde92" title="Returns the source watch.">GetWatch</a>() <a name="l00346"></a>00346 { <a name="l00347"></a>00347 <span class="keywordflow">return</span> m_pWatch; <a name="l00348"></a>00348 } <a name="l00349"></a>00349 <a name="l00351"></a>00351 <a name="l00355"></a>00355 <span class="keyword">static</span> uint32_t <a class="code" href="classInotifyEvent.html#eced3a88a6dea190c5df19c2a6599010" title="Finds the appropriate mask for a name.">GetMaskByName</a>(<span class="keyword">const</span> std::string& rName); <a name="l00356"></a>00356 <a name="l00358"></a>00358 <a name="l00362"></a>00362 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classInotifyEvent.html#c08a0a26ea33dbe94aaf1ac830c103a5" title="Fills the string with all types contained in an event mask value.">DumpTypes</a>(uint32_t uValue, std::string& rStr); <a name="l00363"></a>00363 <a name="l00365"></a>00365 <a name="l00368"></a>00368 <span class="keywordtype">void</span> <a class="code" href="classInotifyEvent.html#c08a0a26ea33dbe94aaf1ac830c103a5" title="Fills the string with all types contained in an event mask value.">DumpTypes</a>(std::string& rStr) <span class="keyword">const</span>; <a name="l00369"></a>00369 <a name="l00370"></a>00370 <span class="keyword">private</span>: <a name="l00371"></a>00371 uint32_t m_uMask; <a name="l00372"></a>00372 uint32_t m_uCookie; <a name="l00373"></a>00373 std::string m_name; <a name="l00374"></a>00374 <a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>* m_pWatch; <a name="l00375"></a>00375 }; <a name="l00376"></a>00376 <a name="l00377"></a>00377 <a name="l00378"></a>00378 <a name="l00380"></a>00380 <a name="l00386"></a><a class="code" href="classInotifyWatch.html">00386</a> <span class="keyword">class </span><a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a> <a name="l00387"></a>00387 { <a name="l00388"></a>00388 <span class="keyword">public</span>: <a name="l00390"></a>00390 <a name="l00398"></a><a class="code" href="classInotifyWatch.html#c9c02f1dbd143eebd711eba03ac366e9">00398</a> <a class="code" href="classInotifyWatch.html#c9c02f1dbd143eebd711eba03ac366e9" title="Constructor.">InotifyWatch</a>(<span class="keyword">const</span> std::string& rPath, int32_t uMask, <span class="keywordtype">bool</span> fEnabled = <span class="keyword">true</span>) <a name="l00399"></a>00399 : m_path(rPath), <a name="l00400"></a>00400 m_uMask(uMask), <a name="l00401"></a>00401 m_wd((int32_t) -1), <a name="l00402"></a>00402 m_fEnabled(fEnabled) <a name="l00403"></a>00403 { <a name="l00404"></a>00404 <a class="code" href="inotify-cxx_8h.html#981aa546075fba39715fd2f63a41f575">IN_LOCK_INIT</a> <a name="l00405"></a>00405 } <a name="l00406"></a>00406 <a name="l00408"></a><a class="code" href="classInotifyWatch.html#871c16b01aa8841b36246e5b629ecaef">00408</a> <a class="code" href="classInotifyWatch.html#871c16b01aa8841b36246e5b629ecaef" title="Destructor.">~InotifyWatch</a>() <a name="l00409"></a>00409 { <a name="l00410"></a>00410 <a class="code" href="inotify-cxx_8h.html#08422ec66fb587c1684afbaa575a53dd">IN_LOCK_DONE</a> <a name="l00411"></a>00411 } <a name="l00412"></a>00412 <a name="l00414"></a>00414 <a name="l00417"></a><a class="code" href="classInotifyWatch.html#855f982421402dd63d064dde328f2a59">00417</a> <span class="keyword">inline</span> int32_t <a class="code" href="classInotifyWatch.html#855f982421402dd63d064dde328f2a59" title="Returns the watch descriptor.">GetDescriptor</a>()<span class="keyword"> const</span> <a name="l00418"></a>00418 <span class="keyword"> </span>{ <a name="l00419"></a>00419 <span class="keywordflow">return</span> m_wd; <a name="l00420"></a>00420 } <a name="l00421"></a>00421 <a name="l00423"></a>00423 <a name="l00426"></a><a class="code" href="classInotifyWatch.html#2e659c699e7d43bd0a218fe4905784d2">00426</a> <span class="keyword">inline</span> <span class="keyword">const</span> std::string& <a class="code" href="classInotifyWatch.html#2e659c699e7d43bd0a218fe4905784d2" title="Returns the watched file path.">GetPath</a>()<span class="keyword"> const</span> <a name="l00427"></a>00427 <span class="keyword"> </span>{ <a name="l00428"></a>00428 <span class="keywordflow">return</span> m_path; <a name="l00429"></a>00429 } <a name="l00430"></a>00430 <a name="l00432"></a>00432 <a name="l00435"></a><a class="code" href="classInotifyWatch.html#f759f9baca6f4abbbaae57e076486009">00435</a> <span class="keyword">inline</span> uint32_t <a class="code" href="classInotifyWatch.html#f759f9baca6f4abbbaae57e076486009" title="Returns the watch event mask.">GetMask</a>()<span class="keyword"> const</span> <a name="l00436"></a>00436 <span class="keyword"> </span>{ <a name="l00437"></a>00437 <span class="keywordflow">return</span> (uint32_t) m_uMask; <a name="l00438"></a>00438 } <a name="l00439"></a>00439 <a name="l00441"></a>00441 <a name="l00450"></a>00450 <span class="keywordtype">void</span> <a class="code" href="classInotifyWatch.html#3ad7fbc55c21b3fcd08c2d1d388e14b6" title="Sets the watch event mask.">SetMask</a>(uint32_t uMask) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00451"></a>00451 <a name="l00453"></a>00453 <a name="l00456"></a><a class="code" href="classInotifyWatch.html#cbf0042d06841f9503405b104e4c35d0">00456</a> <span class="keyword">inline</span> <a class="code" href="classInotify.html" title="inotify class">Inotify</a>* <a class="code" href="classInotifyWatch.html#cbf0042d06841f9503405b104e4c35d0" title="Returns the appropriate inotify class instance.">GetInotify</a>() <a name="l00457"></a>00457 { <a name="l00458"></a>00458 <span class="keywordflow">return</span> m_pInotify; <a name="l00459"></a>00459 } <a name="l00460"></a>00460 <a name="l00462"></a>00462 <a name="l00473"></a>00473 <span class="keywordtype">void</span> <a class="code" href="classInotifyWatch.html#a71aff8650fadff32a3c655ca50945f1" title="Enables/disables the watch.">SetEnabled</a>(<span class="keywordtype">bool</span> fEnabled) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00474"></a>00474 <a name="l00476"></a>00476 <a name="l00479"></a><a class="code" href="classInotifyWatch.html#5ab551a912e5acff6a9c74baaf9ea324">00479</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classInotifyWatch.html#5ab551a912e5acff6a9c74baaf9ea324" title="Checks whether the watch is enabled.">IsEnabled</a>()<span class="keyword"> const</span> <a name="l00480"></a>00480 <span class="keyword"> </span>{ <a name="l00481"></a>00481 <span class="keywordflow">return</span> m_fEnabled; <a name="l00482"></a>00482 } <a name="l00483"></a>00483 <a name="l00485"></a>00485 <a name="l00494"></a><a class="code" href="classInotifyWatch.html#222c911ef0e8d6f61570489ed6042e55">00494</a> <span class="keyword">inline</span> <span class="keywordtype">bool</span> <a class="code" href="classInotifyWatch.html#222c911ef0e8d6f61570489ed6042e55" title="Checks whether the watch is recursive.">IsRecursive</a>()<span class="keyword"> const</span> <a name="l00495"></a>00495 <span class="keyword"> </span>{ <a name="l00496"></a>00496 <span class="keywordflow">return</span> <span class="keyword">false</span>; <a name="l00497"></a>00497 } <a name="l00498"></a>00498 <a name="l00499"></a>00499 <span class="keyword">private</span>: <a name="l00500"></a><a class="code" href="classInotifyWatch.html#94bfb861dc18ca5d16abfcff90db8c86">00500</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classInotify.html" title="inotify class">Inotify</a>; <a name="l00501"></a>00501 <a name="l00502"></a>00502 std::string m_path; <a name="l00503"></a>00503 uint32_t m_uMask; <a name="l00504"></a>00504 int32_t m_wd; <a name="l00505"></a>00505 <a class="code" href="classInotify.html" title="inotify class">Inotify</a>* m_pInotify; <a name="l00506"></a>00506 <span class="keywordtype">bool</span> m_fEnabled; <a name="l00507"></a>00507 <a name="l00508"></a>00508 <a class="code" href="inotify-cxx_8h.html#904d25c0fd931e1bad4f9d5cd346a766" title="inotify-cxx thread safety">IN_LOCK_DECL</a> <a name="l00509"></a>00509 <a name="l00511"></a>00511 <a name="l00516"></a>00516 <span class="keywordtype">void</span> __Disable(); <a name="l00517"></a>00517 }; <a name="l00518"></a>00518 <a name="l00519"></a>00519 <a name="l00521"></a><a class="code" href="inotify-cxx_8h.html#e6b5ebcb4e0d6a9f5ca8da26bc00cc2a">00521</a> <span class="keyword">typedef</span> std::map<int32_t, InotifyWatch*> <a class="code" href="inotify-cxx_8h.html#e6b5ebcb4e0d6a9f5ca8da26bc00cc2a" title="Mapping from watch descriptors to watch objects.">IN_WATCH_MAP</a>; <a name="l00522"></a>00522 <a name="l00524"></a><a class="code" href="inotify-cxx_8h.html#5dd7761ff5a6b7cc7271950aebb7ddf6">00524</a> <span class="keyword">typedef</span> std::map<std::string, InotifyWatch*> <a class="code" href="inotify-cxx_8h.html#5dd7761ff5a6b7cc7271950aebb7ddf6" title="Mapping from paths to watch objects.">IN_WP_MAP</a>; <a name="l00525"></a>00525 <a name="l00526"></a>00526 <a name="l00528"></a>00528 <a name="l00534"></a><a class="code" href="classInotify.html">00534</a> <span class="keyword">class </span><a class="code" href="classInotify.html" title="inotify class">Inotify</a> <a name="l00535"></a>00535 { <a name="l00536"></a>00536 <span class="keyword">public</span>: <a name="l00538"></a>00538 <a name="l00544"></a>00544 <a class="code" href="classInotify.html#a6fe6e9cb3343665eb968fcd5170cfb9" title="Constructor.">Inotify</a>() <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00545"></a>00545 <a name="l00547"></a>00547 <a name="l00550"></a>00550 <a class="code" href="classInotify.html#f19dd5e491395673e4798eb9dbf5f682" title="Destructor.">~Inotify</a>(); <a name="l00551"></a>00551 <a name="l00553"></a>00553 <span class="keywordtype">void</span> <a class="code" href="classInotify.html#86ae86c43ea1a72f562ca46393309635" title="Removes all watches and closes the inotify device.">Close</a>(); <a name="l00554"></a>00554 <a name="l00556"></a>00556 <a name="l00561"></a>00561 <span class="keywordtype">void</span> <a class="code" href="classInotify.html#2ef771ebaf982d76ebe19b3f5bc9cd83" title="Adds a new watch.">Add</a>(<a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>* pWatch) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00562"></a>00562 <a name="l00564"></a>00564 <a name="l00569"></a><a class="code" href="classInotify.html#35dab56d3e10bf28b5e457871adddb58">00569</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classInotify.html#2ef771ebaf982d76ebe19b3f5bc9cd83" title="Adds a new watch.">Add</a>(<a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>& rWatch) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00570"></a>00570 { <a name="l00571"></a>00571 <a class="code" href="classInotify.html#2ef771ebaf982d76ebe19b3f5bc9cd83" title="Adds a new watch.">Add</a>(&rWatch); <a name="l00572"></a>00572 } <a name="l00573"></a>00573 <a name="l00575"></a>00575 <a name="l00582"></a>00582 <span class="keywordtype">void</span> <a class="code" href="classInotify.html#21c39bb8e5bbc1941b945c18f9005b84" title="Removes a watch.">Remove</a>(<a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>* pWatch) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00583"></a>00583 <a name="l00585"></a>00585 <a name="l00592"></a><a class="code" href="classInotify.html#ac1a52b2ff6bfec07021a44e55d496a6">00592</a> <span class="keyword">inline</span> <span class="keywordtype">void</span> <a class="code" href="classInotify.html#21c39bb8e5bbc1941b945c18f9005b84" title="Removes a watch.">Remove</a>(<a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>& rWatch) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00593"></a>00593 { <a name="l00594"></a>00594 <a class="code" href="classInotify.html#21c39bb8e5bbc1941b945c18f9005b84" title="Removes a watch.">Remove</a>(&rWatch); <a name="l00595"></a>00595 } <a name="l00596"></a>00596 <a name="l00598"></a>00598 <span class="keywordtype">void</span> <a class="code" href="classInotify.html#bc1fd5830ca561efb69bcd2283981741" title="Removes all watches.">RemoveAll</a>(); <a name="l00599"></a>00599 <a name="l00601"></a>00601 <a name="l00609"></a><a class="code" href="classInotify.html#716ae90a00dd4895709ea9b8f7959075">00609</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classInotify.html#716ae90a00dd4895709ea9b8f7959075" title="Returns the count of watches.">GetWatchCount</a>()<span class="keyword"> const</span> <a name="l00610"></a>00610 <span class="keyword"> </span>{ <a name="l00611"></a>00611 <a class="code" href="inotify-cxx_8h.html#963a97dc42487e86715b4e04639b0db8">IN_READ_BEGIN</a> <a name="l00612"></a>00612 <span class="keywordtype">size_t</span> n = (size_t) m_paths.size(); <a name="l00613"></a>00613 <a class="code" href="inotify-cxx_8h.html#0b82080ab6709175341b97e1f3c3955d">IN_READ_END</a> <a name="l00614"></a>00614 <span class="keywordflow">return</span> n; <a name="l00615"></a>00615 } <a name="l00616"></a>00616 <a name="l00618"></a>00618 <a name="l00623"></a><a class="code" href="classInotify.html#6f432affb46f85f7bc19661d5bc77063">00623</a> <span class="keyword">inline</span> <span class="keywordtype">size_t</span> <a class="code" href="classInotify.html#6f432affb46f85f7bc19661d5bc77063" title="Returns the count of enabled watches.">GetEnabledCount</a>()<span class="keyword"> const</span> <a name="l00624"></a>00624 <span class="keyword"> </span>{ <a name="l00625"></a>00625 <a class="code" href="inotify-cxx_8h.html#963a97dc42487e86715b4e04639b0db8">IN_READ_BEGIN</a> <a name="l00626"></a>00626 <span class="keywordtype">size_t</span> n = (size_t) m_watches.size(); <a name="l00627"></a>00627 <a class="code" href="inotify-cxx_8h.html#0b82080ab6709175341b97e1f3c3955d">IN_READ_END</a> <a name="l00628"></a>00628 <span class="keywordflow">return</span> n; <a name="l00629"></a>00629 } <a name="l00630"></a>00630 <a name="l00632"></a>00632 <a name="l00643"></a>00643 <span class="keywordtype">void</span> <a class="code" href="classInotify.html#139c27c6643bb199619f3eae9b32e53b" title="Waits for inotify events.">WaitForEvents</a>(<span class="keywordtype">bool</span> fNoIntr = <span class="keyword">false</span>) throw (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00644"></a>00644 <a name="l00646"></a>00646 <a name="l00652"></a><a class="code" href="classInotify.html#a3c533f956871f904949832ac8f5fbde">00652</a> inline <span class="keywordtype">size_t</span> <a class="code" href="classInotify.html#a3c533f956871f904949832ac8f5fbde" title="Returns the count of received and queued events.">GetEventCount</a>() <a name="l00653"></a>00653 { <a name="l00654"></a>00654 <a class="code" href="inotify-cxx_8h.html#963a97dc42487e86715b4e04639b0db8">IN_READ_BEGIN</a> <a name="l00655"></a>00655 <span class="keywordtype">size_t</span> n = (size_t) m_events.size(); <a name="l00656"></a>00656 <a class="code" href="inotify-cxx_8h.html#0b82080ab6709175341b97e1f3c3955d">IN_READ_END</a> <a name="l00657"></a>00657 <span class="keywordflow">return</span> n; <a name="l00658"></a>00658 } <a name="l00659"></a>00659 <a name="l00661"></a>00661 <a name="l00669"></a>00669 <span class="keywordtype">bool</span> <a class="code" href="classInotify.html#490a3f824c6d041d31ccaabe9bd92008" title="Extracts a queued inotify event.">GetEvent</a>(<a class="code" href="classInotifyEvent.html" title="inotify event class">InotifyEvent</a>* pEvt) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00670"></a>00670 <a name="l00672"></a>00672 <a name="l00679"></a><a class="code" href="classInotify.html#b028c8fa988f6bbb2ef773db3ea3a2d3">00679</a> <span class="keywordtype">bool</span> <a class="code" href="classInotify.html#490a3f824c6d041d31ccaabe9bd92008" title="Extracts a queued inotify event.">GetEvent</a>(<a class="code" href="classInotifyEvent.html" title="inotify event class">InotifyEvent</a>& rEvt) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00680"></a>00680 { <a name="l00681"></a>00681 <span class="keywordflow">return</span> <a class="code" href="classInotify.html#490a3f824c6d041d31ccaabe9bd92008" title="Extracts a queued inotify event.">GetEvent</a>(&rEvt); <a name="l00682"></a>00682 } <a name="l00683"></a>00683 <a name="l00685"></a>00685 <a name="l00693"></a>00693 <span class="keywordtype">bool</span> <a class="code" href="classInotify.html#19cde43d082ff92bd02654610019300d" title="Extracts a queued inotify event (without removing).">PeekEvent</a>(<a class="code" href="classInotifyEvent.html" title="inotify event class">InotifyEvent</a>* pEvt) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00694"></a>00694 <a name="l00696"></a>00696 <a name="l00703"></a><a class="code" href="classInotify.html#287dc0d238fa6edc3269441cb284f979">00703</a> <span class="keywordtype">bool</span> <a class="code" href="classInotify.html#19cde43d082ff92bd02654610019300d" title="Extracts a queued inotify event (without removing).">PeekEvent</a>(<a class="code" href="classInotifyEvent.html" title="inotify event class">InotifyEvent</a>& rEvt) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00704"></a>00704 { <a name="l00705"></a>00705 <span class="keywordflow">return</span> <a class="code" href="classInotify.html#19cde43d082ff92bd02654610019300d" title="Extracts a queued inotify event (without removing).">PeekEvent</a>(&rEvt); <a name="l00706"></a>00706 } <a name="l00707"></a>00707 <a name="l00709"></a>00709 <a name="l00715"></a>00715 <a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>* <a class="code" href="classInotify.html#182d19b667c9e0899802b70a579eff40" title="Searches for a watch by a watch descriptor.">FindWatch</a>(<span class="keywordtype">int</span> iDescriptor); <a name="l00716"></a>00716 <a name="l00718"></a>00718 <a name="l00728"></a>00728 <a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>* <a class="code" href="classInotify.html#182d19b667c9e0899802b70a579eff40" title="Searches for a watch by a watch descriptor.">FindWatch</a>(<span class="keyword">const</span> std::string& rPath); <a name="l00729"></a>00729 <a name="l00731"></a>00731 <a name="l00739"></a><a class="code" href="classInotify.html#abab7015203bf36d0256e75d4f4861f9">00739</a> <span class="keyword">inline</span> <span class="keywordtype">int</span> <a class="code" href="classInotify.html#abab7015203bf36d0256e75d4f4861f9" title="Returns the file descriptor.">GetDescriptor</a>()<span class="keyword"> const</span> <a name="l00740"></a>00740 <span class="keyword"> </span>{ <a name="l00741"></a>00741 <span class="keywordflow">return</span> m_fd; <a name="l00742"></a>00742 } <a name="l00743"></a>00743 <a name="l00745"></a>00745 <a name="l00758"></a>00758 <span class="keywordtype">void</span> <a class="code" href="classInotify.html#b2c8ab8ad4322fb6f0dae0eae442402b" title="Enables/disables non-blocking mode.">SetNonBlock</a>(<span class="keywordtype">bool</span> fNonBlock) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00759"></a>00759 <a name="l00761"></a>00761 <a name="l00774"></a>00774 <span class="keywordtype">void</span> <a class="code" href="classInotify.html#124dd5816205900af61034d47ae65255" title="Enables/disables closing on exec.">SetCloseOnExec</a>(<span class="keywordtype">bool</span> fClOnEx) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00775"></a>00775 <a name="l00777"></a>00777 <a name="l00782"></a>00782 <span class="keyword">static</span> uint32_t <a class="code" href="classInotify.html#70b3b57e8661fbb4c5bc404b86225c3b" title="Acquires a particular inotify capability/limit.">GetCapability</a>(<a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d" title="inotify capability/limit identifiers">InotifyCapability_t</a> cap) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00783"></a>00783 <a name="l00785"></a>00785 <a name="l00793"></a>00793 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classInotify.html#734538233ba2136164f76f4df6c3654e" title="Modifies a particular inotify capability/limit.">SetCapability</a>(<a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d" title="inotify capability/limit identifiers">InotifyCapability_t</a> cap, uint32_t val) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00794"></a>00794 <a name="l00796"></a>00796 <a name="l00800"></a><a class="code" href="classInotify.html#d8e4a4a87d005c71c0b5ea9c6dd53c42">00800</a> <span class="keyword">inline</span> <span class="keyword">static</span> uint32_t <a class="code" href="classInotify.html#d8e4a4a87d005c71c0b5ea9c6dd53c42" title="Returns the maximum number of events in the kernel queue.">GetMaxEvents</a>() throw (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00801"></a>00801 { <a name="l00802"></a>00802 <span class="keywordflow">return</span> <a class="code" href="classInotify.html#70b3b57e8661fbb4c5bc404b86225c3b" title="Acquires a particular inotify capability/limit.">GetCapability</a>(<a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d18e969c9c44523b38a13b0a207286dd1" title="max. events in the kernel queue">IN_MAX_EVENTS</a>); <a name="l00803"></a>00803 } <a name="l00804"></a>00804 <a name="l00806"></a>00806 <a name="l00814"></a><a class="code" href="classInotify.html#66d90ebfa516d4bd1463749def2b58f9">00814</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classInotify.html#66d90ebfa516d4bd1463749def2b58f9" title="Sets the maximum number of events in the kernel queue.">SetMaxEvents</a>(uint32_t val) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00815"></a>00815 { <a name="l00816"></a>00816 <a class="code" href="classInotify.html#734538233ba2136164f76f4df6c3654e" title="Modifies a particular inotify capability/limit.">SetCapability</a>(<a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d18e969c9c44523b38a13b0a207286dd1" title="max. events in the kernel queue">IN_MAX_EVENTS</a>, val); <a name="l00817"></a>00817 } <a name="l00818"></a>00818 <a name="l00820"></a>00820 <a name="l00827"></a><a class="code" href="classInotify.html#c18b7732f67832260fbbd47aebb8af51">00827</a> <span class="keyword">inline</span> <span class="keyword">static</span> uint32_t <a class="code" href="classInotify.html#c18b7732f67832260fbbd47aebb8af51" title="Returns the maximum number of inotify instances per process.">GetMaxInstances</a>() throw (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00828"></a>00828 { <a name="l00829"></a>00829 <span class="keywordflow">return</span> <a class="code" href="classInotify.html#70b3b57e8661fbb4c5bc404b86225c3b" title="Acquires a particular inotify capability/limit.">GetCapability</a>(<a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d43cc45296a9afe5cb68f568176608dd9" title="max. inotify file descriptors per process">IN_MAX_INSTANCES</a>); <a name="l00830"></a>00830 } <a name="l00831"></a>00831 <a name="l00833"></a>00833 <a name="l00841"></a><a class="code" href="classInotify.html#620c891962fe5acd26485c64e9b28d19">00841</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classInotify.html#620c891962fe5acd26485c64e9b28d19" title="Sets the maximum number of inotify instances per process.">SetMaxInstances</a>(uint32_t val) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00842"></a>00842 { <a name="l00843"></a>00843 <a class="code" href="classInotify.html#734538233ba2136164f76f4df6c3654e" title="Modifies a particular inotify capability/limit.">SetCapability</a>(<a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d43cc45296a9afe5cb68f568176608dd9" title="max. inotify file descriptors per process">IN_MAX_INSTANCES</a>, val); <a name="l00844"></a>00844 } <a name="l00845"></a>00845 <a name="l00847"></a>00847 <a name="l00854"></a><a class="code" href="classInotify.html#86dae1b7a72c0d8fc2a632444a0f2f1f">00854</a> <span class="keyword">inline</span> <span class="keyword">static</span> uint32_t <a class="code" href="classInotify.html#86dae1b7a72c0d8fc2a632444a0f2f1f" title="Returns the maximum number of inotify watches per instance.">GetMaxWatches</a>() throw (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00855"></a>00855 { <a name="l00856"></a>00856 <span class="keywordflow">return</span> <a class="code" href="classInotify.html#70b3b57e8661fbb4c5bc404b86225c3b" title="Acquires a particular inotify capability/limit.">GetCapability</a>(<a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d594390780d2bdcec064c00aec1f20429" title="max. watches per file descriptor">IN_MAX_WATCHES</a>); <a name="l00857"></a>00857 } <a name="l00858"></a>00858 <a name="l00860"></a>00860 <a name="l00868"></a><a class="code" href="classInotify.html#5064380cdb4a726ab33f3fa18d15c77a">00868</a> <span class="keyword">inline</span> <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="classInotify.html#5064380cdb4a726ab33f3fa18d15c77a" title="Sets the maximum number of inotify watches per instance.">SetMaxWatches</a>(uint32_t val) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>) <a name="l00869"></a>00869 { <a name="l00870"></a>00870 <a class="code" href="classInotify.html#734538233ba2136164f76f4df6c3654e" title="Modifies a particular inotify capability/limit.">SetCapability</a>(<a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d594390780d2bdcec064c00aec1f20429" title="max. watches per file descriptor">IN_MAX_WATCHES</a>, val); <a name="l00871"></a>00871 } <a name="l00872"></a>00872 <a name="l00873"></a>00873 <span class="keyword">private</span>: <a name="l00874"></a>00874 <span class="keywordtype">int</span> m_fd; <a name="l00875"></a>00875 IN_WATCH_MAP m_watches; <a name="l00876"></a>00876 IN_WP_MAP m_paths; <a name="l00877"></a>00877 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> m_buf[<a class="code" href="inotify-cxx_8h.html#a84911f8e42d71161b60d4a28940abb4" title="Event buffer length.">INOTIFY_BUFLEN</a>]; <a name="l00878"></a>00878 std::deque<InotifyEvent> m_events; <a name="l00879"></a>00879 <a name="l00880"></a>00880 <a class="code" href="inotify-cxx_8h.html#904d25c0fd931e1bad4f9d5cd346a766" title="inotify-cxx thread safety">IN_LOCK_DECL</a> <a name="l00881"></a>00881 <a name="l00882"></a><a class="code" href="classInotify.html#10880f490c33acd8bd24664fc7bce4ae">00882</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classInotifyWatch.html" title="inotify watch class">InotifyWatch</a>; <a name="l00883"></a>00883 <a name="l00884"></a>00884 <span class="keyword">static</span> std::string GetCapabilityPath(<a class="code" href="inotify-cxx_8h.html#bccd39d32dd83905178cf42edaae5c4d" title="inotify capability/limit identifiers">InotifyCapability_t</a> cap) <span class="keywordflow">throw</span> (<a class="code" href="classInotifyException.html" title="Class for inotify exceptions.">InotifyException</a>); <a name="l00885"></a>00885 }; <a name="l00886"></a>00886 <a name="l00887"></a>00887 <a name="l00888"></a>00888 <span class="preprocessor">#endif //_INOTIFYCXX_H_</span> <a name="l00889"></a>00889 <span class="preprocessor"></span> </pre></div></div> <hr size="1"><address style="text-align: right;"><small>Generated on Sun Jun 21 22:27:24 2009 for incron by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address> </body> </html>