Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > a964702347d726c5f8ba742f8b9d5908 > files > 71

incron-0.5.9-1mdv2010.0.i586.rpm

<!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&nbsp;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 &lt;stdint.h&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include &lt;string&gt;</span>
<a name="l00031"></a>00031 <span class="preprocessor">#include &lt;deque&gt;</span>
<a name="l00032"></a>00032 <span class="preprocessor">#include &lt;map&gt;</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 &lt;sys/syscall.h&gt;</span>
<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;sys/inotify.h&gt;</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 &lt;sys/inotify-syscalls.h&gt;</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 &lt;pthread.h&gt;</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(&amp;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(&amp;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(&amp;__m_lock, &amp;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(&amp;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(&amp;__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(&amp;__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(&amp;__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(&amp;__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(&amp;__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&amp; 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&amp; <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-&gt;mask;
<a name="l00249"></a>00249       m_uCookie = (uint32_t) pEvt-&gt;cookie;
<a name="l00250"></a>00250       <span class="keywordflow">if</span> (pEvt-&gt;name != NULL) {
<a name="l00251"></a>00251         m_name = pEvt-&gt;len &gt; 0
<a name="l00252"></a>00252             ? pEvt-&gt;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 &amp; uType) != 0) &amp;&amp; ((~uValue &amp; 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&amp; <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&amp; 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&amp; 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&amp; 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&amp; 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&amp; 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&amp; <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&lt;int32_t, InotifyWatch*&gt; <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&lt;std::string, InotifyWatch*&gt; <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>&amp; 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>(&amp;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>&amp; 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>(&amp;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>&amp; 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>(&amp;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>&amp; 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>(&amp;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&amp; 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&lt;InotifyEvent&gt; 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&nbsp;
<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>