uvw/loop_8h_source.html
2022-03-10 13:48:56 +01:00

329 lines
50 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>uvw: src/uvw/loop.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">uvw
&#160;<span id="projectnumber">2.12.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_98934c98f70735fe3a272005a9eb8736.html">uvw</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">loop.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="preprocessor">#ifndef UVW_LOOP_INCLUDE_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="preprocessor">#define UVW_LOOP_INCLUDE_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160; </div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="preprocessor">#ifdef _WIN32</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="preprocessor"># include &lt;ciso646&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160; </div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="preprocessor">#include &lt;chrono&gt;</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="preprocessor">#include &lt;functional&gt;</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="preprocessor">#include &lt;type_traits&gt;</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="preprocessor">#include &lt;utility&gt;</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="preprocessor">#include &lt;uv.h&gt;</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="preprocessor">#include &quot;emitter.h&quot;</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="preprocessor">#include &quot;util.h&quot;</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160; </div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="keyword">namespace </span><a class="code" href="namespaceuvw.html">uvw</a> {</div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160; </div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="keyword">class </span>AsyncHandle;</div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;<span class="keyword">class </span>CheckHandle;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="keyword">class </span>FsEventHandle;</div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="keyword">class </span>FsPollHandle;</div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="keyword">class </span>IdleHandle;</div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="keyword">class </span>PipeHandle;</div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="keyword">class </span>PollHandle;</div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">class </span>PrepareHandle;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">class </span>ProcessHandle;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;<span class="keyword">class </span>SignalHandle;</div>
<div class="line"><a name="l00029"></a><span class="lineno"> 29</span>&#160;<span class="keyword">class </span>TCPHandle;</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160;<span class="keyword">class </span>TimerHandle;</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160;<span class="keyword">class </span>TTYHandle;</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160;<span class="keyword">class </span>UDPHandle;</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160; </div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160;<span class="keyword">namespace </span>details {</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160; </div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160;<span class="keyword">enum class</span> UVLoopOption : std::underlying_type_t&lt;uv_loop_option&gt; {</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; BLOCK_SIGNAL = UV_LOOP_BLOCK_SIGNAL,</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; IDLE_TIME = UV_METRICS_IDLE_TIME</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160;};</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; </div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160;<span class="keyword">enum class</span> UVRunMode : std::underlying_type_t&lt;uv_run_mode&gt; {</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; DEFAULT = UV_RUN_DEFAULT,</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; ONCE = UV_RUN_ONCE,</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160; NOWAIT = UV_RUN_NOWAIT</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160;};</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160; </div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160;} <span class="comment">// namespace details</span></div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; </div>
<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html"> 57</a></span>&#160;<span class="keyword">class </span><a class="code" href="classuvw_1_1Loop.html">Loop</a> final: <span class="keyword">public</span> <a class="code" href="classuvw_1_1Emitter.html">Emitter</a>&lt;Loop&gt;, <span class="keyword">public</span> std::enable_shared_from_this&lt;Loop&gt; {</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; <span class="keyword">using</span> Deleter = void (*)(uv_loop_t *);</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160; </div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span>, <span class="keyword">typename</span>&gt;</div>
<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>&#160; <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classuvw_1_1Resource.html">Resource</a>;</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; </div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <span class="keyword">auto</span> create_resource(<span class="keywordtype">int</span>, Args &amp;&amp;...args) -&gt; decltype(std::declval&lt;R&gt;().init(), std::shared_ptr&lt;R&gt;{}) {</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; <span class="keyword">auto</span> ptr = R::create(shared_from_this(), std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160; ptr = ptr-&gt;init() ? ptr : <span class="keyword">nullptr</span>;</div>
<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>&#160; <span class="keywordflow">return</span> ptr;</div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160; }</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160; </div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; std::shared_ptr&lt;R&gt; create_resource(<span class="keywordtype">char</span>, Args &amp;&amp;...args) {</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <span class="keywordflow">return</span> R::create(shared_from_this(), std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160; }</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; </div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160; <a class="code" href="classuvw_1_1Loop.html">Loop</a>(std::unique_ptr&lt;uv_loop_t, Deleter&gt; ptr) noexcept;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160; </div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">using</span> Time = std::chrono::duration&lt;uint64_t, std::milli&gt;;</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160; <span class="keyword">using</span> Configure = details::UVLoopOption;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <span class="keyword">using</span> Mode = details::UVRunMode;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; </div>
<div class="line"><a name="l00086"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#ae2a1f36aafb919444d933e4a43e78d8f"> 86</a></span>&#160; <span class="keyword">static</span> std::shared_ptr&lt;Loop&gt; <a class="code" href="classuvw_1_1Loop.html#ae2a1f36aafb919444d933e4a43e78d8f">create</a>();</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; </div>
<div class="line"><a name="l00098"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a807bb8d8736201fa9cd479fb7470a630"> 98</a></span>&#160; <span class="keyword">static</span> std::shared_ptr&lt;Loop&gt; <a class="code" href="classuvw_1_1Loop.html#a807bb8d8736201fa9cd479fb7470a630">create</a>(uv_loop_t *loop);</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; </div>
<div class="line"><a name="l00112"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a284450b3ef37c62bd7a984c73552d7b8"> 112</a></span>&#160; <span class="keyword">static</span> std::shared_ptr&lt;Loop&gt; <a class="code" href="classuvw_1_1Loop.html#a284450b3ef37c62bd7a984c73552d7b8">getDefault</a>();</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160; </div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160; <a class="code" href="classuvw_1_1Loop.html">Loop</a>(<span class="keyword">const</span> <a class="code" href="classuvw_1_1Loop.html">Loop</a> &amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160; <a class="code" href="classuvw_1_1Loop.html">Loop</a>(<a class="code" href="classuvw_1_1Loop.html">Loop</a> &amp;&amp;other) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>&#160; </div>
<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>&#160; <a class="code" href="classuvw_1_1Loop.html">Loop</a> &amp;operator=(<span class="keyword">const</span> <a class="code" href="classuvw_1_1Loop.html">Loop</a> &amp;) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>&#160; <a class="code" href="classuvw_1_1Loop.html">Loop</a> &amp;operator=(<a class="code" href="classuvw_1_1Loop.html">Loop</a> &amp;&amp;other) = <span class="keyword">delete</span>;</div>
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>&#160; </div>
<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>&#160; ~<a class="code" href="classuvw_1_1Loop.html">Loop</a>() noexcept;</div>
<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>&#160; </div>
<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>&#160; template&lt;typename... Args&gt;</div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a899b9b454dcc99b8f4f105ea88df9e88"> 142</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1Loop.html#a899b9b454dcc99b8f4f105ea88df9e88">configure</a>(Configure flag, Args &amp;&amp;...args) {</div>
<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>&#160; <span class="keyword">auto</span> option = <span class="keyword">static_cast&lt;</span>std::underlying_type_t&lt;Configure&gt;<span class="keyword">&gt;</span>(flag);</div>
<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>&#160; <span class="keyword">auto</span> err = uv_loop_configure(loop.get(), <span class="keyword">static_cast&lt;</span>uv_loop_option<span class="keyword">&gt;</span>(option), std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>&#160; <span class="keywordflow">if</span>(err) { publish(<a class="code" href="structuvw_1_1ErrorEvent.html">ErrorEvent</a>{err}); }</div>
<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>&#160; }</div>
<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>&#160; </div>
<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>&#160; <span class="keyword">template</span>&lt;<span class="keyword">typename</span> R, <span class="keyword">typename</span>... Args&gt;</div>
<div class="line"><a name="l00159"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a61b3841f9bb597c4aa6ca812e8a2057e"> 159</a></span>&#160; std::shared_ptr&lt;R&gt; <a class="code" href="classuvw_1_1Loop.html#a61b3841f9bb597c4aa6ca812e8a2057e">resource</a>(Args &amp;&amp;...args) {</div>
<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>&#160; <span class="keywordflow">return</span> create_resource&lt;R&gt;(0, std::forward&lt;Args&gt;(args)...);</div>
<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>&#160; }</div>
<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>&#160; </div>
<div class="line"><a name="l00171"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#ae0dbd76098075f5a187256834df568c3"> 171</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1Loop.html#ae0dbd76098075f5a187256834df568c3">close</a>();</div>
<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>&#160; </div>
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>&#160; <span class="keyword">template</span>&lt;Mode mode = Mode::DEFAULT&gt;</div>
<div class="line"><a name="l00192"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#aa86d06ae9f91d8b48d1d5358040f2547"> 192</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1Loop.html#aa86d06ae9f91d8b48d1d5358040f2547">run</a>() noexcept;</div>
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>&#160; </div>
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#adf73136457c892dad414342c8648e6c1"> 198</a></span>&#160; <span class="keywordtype">bool</span> <a class="code" href="classuvw_1_1Loop.html#adf73136457c892dad414342c8648e6c1">alive</a>() const noexcept;</div>
<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>&#160; </div>
<div class="line"><a name="l00208"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a8e9ff32011351d8cf99b0b3924a670df"> 208</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1Loop.html#a8e9ff32011351d8cf99b0b3924a670df">stop</a>() noexcept;</div>
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>&#160; </div>
<div class="line"><a name="l00219"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#ac78ffc161590ea88902c867ef716d0a2"> 219</a></span>&#160; <span class="keywordtype">int</span> <a class="code" href="classuvw_1_1Loop.html#ac78ffc161590ea88902c867ef716d0a2">descriptor</a>() const noexcept;</div>
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>&#160; </div>
<div class="line"><a name="l00227"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#aa815a8db94b2beb2d23448fe81cf648c"> 227</a></span>&#160; std::pair&lt;<span class="keywordtype">bool</span>, Time&gt; <a class="code" href="classuvw_1_1Loop.html#aa815a8db94b2beb2d23448fe81cf648c">timeout</a>() const noexcept;</div>
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>&#160; </div>
<div class="line"><a name="l00234"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#aaadae9cbb9dbeae326112e1390eeb1c4"> 234</a></span>&#160; Time <a class="code" href="classuvw_1_1Loop.html#aaadae9cbb9dbeae326112e1390eeb1c4">idleTime</a>() const noexcept;</div>
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>&#160; </div>
<div class="line"><a name="l00248"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#abb1a1000e23e7d1e849a21fd79b86be9"> 248</a></span>&#160; Time <a class="code" href="classuvw_1_1Loop.html#abb1a1000e23e7d1e849a21fd79b86be9">now</a>() const noexcept;</div>
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>&#160; </div>
<div class="line"><a name="l00259"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a080af72a50c18b92bb50e89afa116e57"> 259</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1Loop.html#a080af72a50c18b92bb50e89afa116e57">update</a>() const noexcept;</div>
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>&#160; </div>
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>&#160; template&lt;typename Func&gt;</div>
<div class="line"><a name="l00269"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a87d300f049faa82fe1ec92448499431e"> 269</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1Loop.html#a87d300f049faa82fe1ec92448499431e">walk</a>(Func callback) {</div>
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>&#160; <span class="keyword">auto</span> func = [](uv_handle_t *handle, <span class="keywordtype">void</span> *func) {</div>
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>&#160; <span class="keywordflow">if</span>(handle-&gt;data) {</div>
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>&#160; <span class="keyword">auto</span> &amp;cb = *<span class="keyword">static_cast&lt;</span>Func *<span class="keyword">&gt;</span>(func);</div>
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>&#160; </div>
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>&#160; <span class="keywordflow">switch</span>(<a class="code" href="structuvw_1_1Utilities.html#a2a05286add192e595f5d7d5d3db682fb">Utilities::guessHandle</a>(<a class="code" href="namespaceuvw.html#aa3ae4a038de60a69b2513a039add1e48">HandleCategory</a>{handle-&gt;type})) {</div>
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>&#160; <span class="keywordflow">case</span> HandleType::ASYNC:</div>
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1AsyncHandle.html">AsyncHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>&#160; <span class="keywordflow">case</span> HandleType::CHECK:</div>
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1CheckHandle.html">CheckHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>&#160; <span class="keywordflow">case</span> HandleType::FS_EVENT:</div>
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1FsEventHandle.html">FsEventHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>&#160; <span class="keywordflow">case</span> HandleType::FS_POLL:</div>
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1FsPollHandle.html">FsPollHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>&#160; <span class="keywordflow">case</span> HandleType::IDLE:</div>
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1IdleHandle.html">IdleHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>&#160; <span class="keywordflow">case</span> HandleType::PIPE:</div>
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1PipeHandle.html">PipeHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>&#160; <span class="keywordflow">case</span> HandleType::POLL:</div>
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1PollHandle.html">PollHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>&#160; <span class="keywordflow">case</span> HandleType::PREPARE:</div>
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1PrepareHandle.html">PrepareHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>&#160; <span class="keywordflow">case</span> HandleType::PROCESS:</div>
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1ProcessHandle.html">ProcessHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>&#160; <span class="keywordflow">case</span> HandleType::SIGNAL:</div>
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1SignalHandle.html">SignalHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>&#160; <span class="keywordflow">case</span> HandleType::TCP:</div>
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1TCPHandle.html">TCPHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>&#160; <span class="keywordflow">case</span> HandleType::TIMER:</div>
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1TimerHandle.html">TimerHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>&#160; <span class="keywordflow">case</span> HandleType::TTY:</div>
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1TTYHandle.html">TTYHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>&#160; <span class="keywordflow">case</span> HandleType::UDP:</div>
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>&#160; cb(*<span class="keyword">static_cast&lt;</span><a class="code" href="classuvw_1_1UDPHandle.html">UDPHandle</a> *<span class="keyword">&gt;</span>(handle-&gt;data));</div>
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>&#160; <span class="keywordflow">default</span>:</div>
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>&#160; <span class="comment">// this handle isn&#39;t managed by uvw, let it be...</span></div>
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>&#160; <span class="keywordflow">break</span>;</div>
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>&#160; }</div>
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>&#160; }</div>
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>&#160; };</div>
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>&#160; </div>
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>&#160; uv_walk(loop.get(), func, &amp;callback);</div>
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>&#160; }</div>
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>&#160; </div>
<div class="line"><a name="l00357"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a23471c5025efc9db3cc42f6950f952b1"> 357</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1Loop.html#a23471c5025efc9db3cc42f6950f952b1">fork</a>() noexcept;</div>
<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>&#160; </div>
<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>&#160; template&lt;typename R = <span class="keywordtype">void</span>&gt;</div>
<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a07480967d95c0f9908fc75292b07c858"> 364</a></span>&#160; std::shared_ptr&lt;R&gt; <a class="code" href="classuvw_1_1Loop.html#a07480967d95c0f9908fc75292b07c858">data</a>()<span class="keyword"> const </span>{</div>
<div class="line"><a name="l00365"></a><span class="lineno"> 365</span>&#160; <span class="keywordflow">return</span> std::static_pointer_cast&lt;R&gt;(userData);</div>
<div class="line"><a name="l00366"></a><span class="lineno"> 366</span>&#160; }</div>
<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>&#160; </div>
<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a8ab9a0c0d23b615c3f5de7b15d742aaf"> 372</a></span>&#160; <span class="keywordtype">void</span> <a class="code" href="classuvw_1_1Loop.html#a8ab9a0c0d23b615c3f5de7b15d742aaf">data</a>(std::shared_ptr&lt;void&gt; uData);</div>
<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>&#160; </div>
<div class="line"><a name="l00389"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#ac33b64667ba24e94456ed4ec172372c6"> 389</a></span>&#160; <span class="keyword">const</span> uv_loop_t *<a class="code" href="classuvw_1_1Loop.html#ac33b64667ba24e94456ed4ec172372c6">raw</a>() const noexcept;</div>
<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>&#160; </div>
<div class="line"><a name="l00406"></a><span class="lineno"><a class="line" href="classuvw_1_1Loop.html#a4d7d1f89d6e74b8c542e6de4ef4a1753"> 406</a></span>&#160; uv_loop_t *<a class="code" href="classuvw_1_1Loop.html#ac33b64667ba24e94456ed4ec172372c6">raw</a>() noexcept;</div>
<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>&#160; </div>
<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>&#160;private:</div>
<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>&#160; std::unique_ptr&lt;uv_loop_t, Deleter&gt; loop;</div>
<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>&#160; std::shared_ptr&lt;<span class="keywordtype">void</span>&gt; userData{<span class="keyword">nullptr</span>};</div>
<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>&#160;};</div>
<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>&#160; </div>
<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>&#160;<span class="comment">// (extern) explicit instantiations</span></div>
<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>&#160;<span class="preprocessor">#ifdef UVW_AS_LIB</span></div>
<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>&#160;<span class="keyword">extern</span> <span class="keyword">template</span> <span class="keywordtype">bool</span> Loop::run&lt;Loop::Mode::DEFAULT&gt;() noexcept;</div>
<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>&#160;extern template <span class="keywordtype">bool</span> Loop::run&lt;Loop::Mode::ONCE&gt;() noexcept;</div>
<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>&#160;extern template <span class="keywordtype">bool</span> Loop::run&lt;Loop::Mode::NOWAIT&gt;() noexcept;</div>
<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// UVW_AS_LIB</span></div>
<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>&#160; </div>
<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>&#160;} <span class="comment">// namespace uvw</span></div>
<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>&#160; </div>
<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>&#160;<span class="preprocessor">#ifndef UVW_AS_LIB</span></div>
<div class="line"><a name="l00423"></a><span class="lineno"> 423</span>&#160;<span class="preprocessor"># include &quot;loop.cpp&quot;</span></div>
<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>&#160;<span class="preprocessor">#endif</span></div>
<div class="line"><a name="l00425"></a><span class="lineno"> 425</span>&#160; </div>
<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>&#160;<span class="preprocessor">#endif </span><span class="comment">// UVW_LOOP_INCLUDE_H</span></div>
<div class="ttc" id="aclassuvw_1_1AsyncHandle_html"><div class="ttname"><a href="classuvw_1_1AsyncHandle.html">uvw::AsyncHandle</a></div><div class="ttdoc">The AsyncHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="async_8h_source.html#l00025">async.h:25</a></div></div>
<div class="ttc" id="aclassuvw_1_1CheckHandle_html"><div class="ttname"><a href="classuvw_1_1CheckHandle.html">uvw::CheckHandle</a></div><div class="ttdoc">The CheckHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="check_8h_source.html#l00025">check.h:25</a></div></div>
<div class="ttc" id="aclassuvw_1_1Emitter_html"><div class="ttname"><a href="classuvw_1_1Emitter.html">uvw::Emitter</a></div><div class="ttdoc">Event emitter base class.</div><div class="ttdef"><b>Definition:</b> <a href="emitter_8h_source.html#l00082">emitter.h:82</a></div></div>
<div class="ttc" id="aclassuvw_1_1FsEventHandle_html"><div class="ttname"><a href="classuvw_1_1FsEventHandle.html">uvw::FsEventHandle</a></div><div class="ttdoc">The FsEventHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="fs__event_8h_source.html#l00068">fs_event.h:68</a></div></div>
<div class="ttc" id="aclassuvw_1_1FsPollHandle_html"><div class="ttname"><a href="classuvw_1_1FsPollHandle.html">uvw::FsPollHandle</a></div><div class="ttdoc">The FsPollHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="fs__poll_8h_source.html#l00034">fs_poll.h:34</a></div></div>
<div class="ttc" id="aclassuvw_1_1IdleHandle_html"><div class="ttname"><a href="classuvw_1_1IdleHandle.html">uvw::IdleHandle</a></div><div class="ttdoc">The IdleHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="idle_8h_source.html#l00033">idle.h:33</a></div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html"><div class="ttname"><a href="classuvw_1_1Loop.html">uvw::Loop</a></div><div class="ttdoc">The Loop class.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00057">loop.h:57</a></div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a07480967d95c0f9908fc75292b07c858"><div class="ttname"><a href="classuvw_1_1Loop.html#a07480967d95c0f9908fc75292b07c858">uvw::Loop::data</a></div><div class="ttdeci">std::shared_ptr&lt; R &gt; data() const</div><div class="ttdoc">Gets user-defined data. uvw won't use this field in any case.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00364">loop.h:364</a></div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a080af72a50c18b92bb50e89afa116e57"><div class="ttname"><a href="classuvw_1_1Loop.html#a080af72a50c18b92bb50e89afa116e57">uvw::Loop::update</a></div><div class="ttdeci">void update() const noexcept</div><div class="ttdoc">Updates the event loops concept of now.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a23471c5025efc9db3cc42f6950f952b1"><div class="ttname"><a href="classuvw_1_1Loop.html#a23471c5025efc9db3cc42f6950f952b1">uvw::Loop::fork</a></div><div class="ttdeci">void fork() noexcept</div><div class="ttdoc">Reinitialize any kernel state necessary in the child process after a fork(2) system call.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a284450b3ef37c62bd7a984c73552d7b8"><div class="ttname"><a href="classuvw_1_1Loop.html#a284450b3ef37c62bd7a984c73552d7b8">uvw::Loop::getDefault</a></div><div class="ttdeci">static std::shared_ptr&lt; Loop &gt; getDefault()</div><div class="ttdoc">Gets the initialized default loop.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a61b3841f9bb597c4aa6ca812e8a2057e"><div class="ttname"><a href="classuvw_1_1Loop.html#a61b3841f9bb597c4aa6ca812e8a2057e">uvw::Loop::resource</a></div><div class="ttdeci">std::shared_ptr&lt; R &gt; resource(Args &amp;&amp;...args)</div><div class="ttdoc">Creates resources of any type.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00159">loop.h:159</a></div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a807bb8d8736201fa9cd479fb7470a630"><div class="ttname"><a href="classuvw_1_1Loop.html#a807bb8d8736201fa9cd479fb7470a630">uvw::Loop::create</a></div><div class="ttdeci">static std::shared_ptr&lt; Loop &gt; create(uv_loop_t *loop)</div><div class="ttdoc">Initializes a new Loop instance from an existing resource.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a87d300f049faa82fe1ec92448499431e"><div class="ttname"><a href="classuvw_1_1Loop.html#a87d300f049faa82fe1ec92448499431e">uvw::Loop::walk</a></div><div class="ttdeci">void walk(Func callback)</div><div class="ttdoc">Walks the list of handles.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00269">loop.h:269</a></div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a899b9b454dcc99b8f4f105ea88df9e88"><div class="ttname"><a href="classuvw_1_1Loop.html#a899b9b454dcc99b8f4f105ea88df9e88">uvw::Loop::configure</a></div><div class="ttdeci">void configure(Configure flag, Args &amp;&amp;...args)</div><div class="ttdoc">Sets additional loop options.</div><div class="ttdef"><b>Definition:</b> <a href="loop_8h_source.html#l00142">loop.h:142</a></div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a8ab9a0c0d23b615c3f5de7b15d742aaf"><div class="ttname"><a href="classuvw_1_1Loop.html#a8ab9a0c0d23b615c3f5de7b15d742aaf">uvw::Loop::data</a></div><div class="ttdeci">void data(std::shared_ptr&lt; void &gt; uData)</div><div class="ttdoc">Sets arbitrary data. uvw won't use this field in any case.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_a8e9ff32011351d8cf99b0b3924a670df"><div class="ttname"><a href="classuvw_1_1Loop.html#a8e9ff32011351d8cf99b0b3924a670df">uvw::Loop::stop</a></div><div class="ttdeci">void stop() noexcept</div><div class="ttdoc">Stops the event loop.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_aa815a8db94b2beb2d23448fe81cf648c"><div class="ttname"><a href="classuvw_1_1Loop.html#aa815a8db94b2beb2d23448fe81cf648c">uvw::Loop::timeout</a></div><div class="ttdeci">std::pair&lt; bool, Time &gt; timeout() const noexcept</div><div class="ttdoc">Gets the poll timeout.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_aa86d06ae9f91d8b48d1d5358040f2547"><div class="ttname"><a href="classuvw_1_1Loop.html#aa86d06ae9f91d8b48d1d5358040f2547">uvw::Loop::run</a></div><div class="ttdeci">bool run() noexcept</div><div class="ttdoc">Runs the event loop.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_aaadae9cbb9dbeae326112e1390eeb1c4"><div class="ttname"><a href="classuvw_1_1Loop.html#aaadae9cbb9dbeae326112e1390eeb1c4">uvw::Loop::idleTime</a></div><div class="ttdeci">Time idleTime() const noexcept</div><div class="ttdoc">Returns the amount of time the event loop has been idle. The call is thread safe.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_abb1a1000e23e7d1e849a21fd79b86be9"><div class="ttname"><a href="classuvw_1_1Loop.html#abb1a1000e23e7d1e849a21fd79b86be9">uvw::Loop::now</a></div><div class="ttdeci">Time now() const noexcept</div><div class="ttdoc">Returns the current timestamp in milliseconds.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_ac33b64667ba24e94456ed4ec172372c6"><div class="ttname"><a href="classuvw_1_1Loop.html#ac33b64667ba24e94456ed4ec172372c6">uvw::Loop::raw</a></div><div class="ttdeci">const uv_loop_t * raw() const noexcept</div><div class="ttdoc">Gets the underlying raw data structure.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_ac78ffc161590ea88902c867ef716d0a2"><div class="ttname"><a href="classuvw_1_1Loop.html#ac78ffc161590ea88902c867ef716d0a2">uvw::Loop::descriptor</a></div><div class="ttdeci">int descriptor() const noexcept</div><div class="ttdoc">Get backend file descriptor.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_adf73136457c892dad414342c8648e6c1"><div class="ttname"><a href="classuvw_1_1Loop.html#adf73136457c892dad414342c8648e6c1">uvw::Loop::alive</a></div><div class="ttdeci">bool alive() const noexcept</div><div class="ttdoc">Checks if there are active resources.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_ae0dbd76098075f5a187256834df568c3"><div class="ttname"><a href="classuvw_1_1Loop.html#ae0dbd76098075f5a187256834df568c3">uvw::Loop::close</a></div><div class="ttdeci">void close()</div><div class="ttdoc">Releases all internal loop resources.</div></div>
<div class="ttc" id="aclassuvw_1_1Loop_html_ae2a1f36aafb919444d933e4a43e78d8f"><div class="ttname"><a href="classuvw_1_1Loop.html#ae2a1f36aafb919444d933e4a43e78d8f">uvw::Loop::create</a></div><div class="ttdeci">static std::shared_ptr&lt; Loop &gt; create()</div><div class="ttdoc">Initializes a new Loop instance.</div></div>
<div class="ttc" id="aclassuvw_1_1PipeHandle_html"><div class="ttname"><a href="classuvw_1_1PipeHandle.html">uvw::PipeHandle</a></div><div class="ttdoc">The PipeHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="pipe_8h_source.html#l00035">pipe.h:35</a></div></div>
<div class="ttc" id="aclassuvw_1_1PollHandle_html"><div class="ttname"><a href="classuvw_1_1PollHandle.html">uvw::PollHandle</a></div><div class="ttdoc">The PollHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="poll_8h_source.html#l00060">poll.h:60</a></div></div>
<div class="ttc" id="aclassuvw_1_1PrepareHandle_html"><div class="ttname"><a href="classuvw_1_1PrepareHandle.html">uvw::PrepareHandle</a></div><div class="ttdoc">The PrepareHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="prepare_8h_source.html#l00025">prepare.h:25</a></div></div>
<div class="ttc" id="aclassuvw_1_1ProcessHandle_html"><div class="ttname"><a href="classuvw_1_1ProcessHandle.html">uvw::ProcessHandle</a></div><div class="ttdoc">The ProcessHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="process_8h_source.html#l00058">process.h:58</a></div></div>
<div class="ttc" id="aclassuvw_1_1Resource_html"><div class="ttname"><a href="classuvw_1_1Resource.html">uvw::Resource</a></div><div class="ttdoc">Common class for almost all the resources available in uvw.</div><div class="ttdef"><b>Definition:</b> <a href="resource_8hpp_source.html#l00017">resource.hpp:17</a></div></div>
<div class="ttc" id="aclassuvw_1_1SignalHandle_html"><div class="ttname"><a href="classuvw_1_1SignalHandle.html">uvw::SignalHandle</a></div><div class="ttdoc">The SignalHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="signal_8h_source.html#l00034">signal.h:34</a></div></div>
<div class="ttc" id="aclassuvw_1_1TCPHandle_html"><div class="ttname"><a href="classuvw_1_1TCPHandle.html">uvw::TCPHandle</a></div><div class="ttdoc">The TCPHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="tcp_8h_source.html#l00040">tcp.h:40</a></div></div>
<div class="ttc" id="aclassuvw_1_1TTYHandle_html"><div class="ttname"><a href="classuvw_1_1TTYHandle.html">uvw::TTYHandle</a></div><div class="ttdoc">The TTYHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="tty_8h_source.html#l00049">tty.h:49</a></div></div>
<div class="ttc" id="aclassuvw_1_1TimerHandle_html"><div class="ttname"><a href="classuvw_1_1TimerHandle.html">uvw::TimerHandle</a></div><div class="ttdoc">The TimerHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="timer_8h_source.html#l00025">timer.h:25</a></div></div>
<div class="ttc" id="aclassuvw_1_1UDPHandle_html"><div class="ttname"><a href="classuvw_1_1UDPHandle.html">uvw::UDPHandle</a></div><div class="ttdoc">The UDPHandle handle.</div><div class="ttdef"><b>Definition:</b> <a href="udp_8h_source.html#l00085">udp.h:85</a></div></div>
<div class="ttc" id="anamespaceuvw_html"><div class="ttname"><a href="namespaceuvw.html">uvw</a></div><div class="ttdoc">uvw default namespace.</div><div class="ttdef"><b>Definition:</b> <a href="async_8h_source.html#l00008">async.h:8</a></div></div>
<div class="ttc" id="anamespaceuvw_html_aa3ae4a038de60a69b2513a039add1e48"><div class="ttname"><a href="namespaceuvw.html#aa3ae4a038de60a69b2513a039add1e48">uvw::HandleCategory</a></div><div class="ttdeci">details::UVTypeWrapper&lt; uv_handle_type &gt; HandleCategory</div><div class="ttdef"><b>Definition:</b> <a href="util_8h_source.html#l00203">util.h:203</a></div></div>
<div class="ttc" id="astructuvw_1_1ErrorEvent_html"><div class="ttname"><a href="structuvw_1_1ErrorEvent.html">uvw::ErrorEvent</a></div><div class="ttdoc">The ErrorEvent event.</div><div class="ttdef"><b>Definition:</b> <a href="emitter_8h_source.html#l00022">emitter.h:22</a></div></div>
<div class="ttc" id="astructuvw_1_1Utilities_html_a2a05286add192e595f5d7d5d3db682fb"><div class="ttname"><a href="structuvw_1_1Utilities.html#a2a05286add192e595f5d7d5d3db682fb">uvw::Utilities::guessHandle</a></div><div class="ttdeci">static HandleType guessHandle(HandleCategory category) noexcept</div><div class="ttdoc">Gets the type of the handle given a category.</div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>